И снова Jsone

gladkih
Offline
Зарегистрирован: 08.02.2021

Добрый день форумчане. Уже замучался. Не могу понять как в NestedArray сделать NestedObject что бы получилось типа вот такого

[

"Data": [

    {
    "date": "1610989230",

     "time": "1610989230",
   },

    {
    "date": "1610989230",

     "time": "1610989230",
   }

  ],
  "SMSData": [
    {
    "datetime": "1610989230",
    "sender": 45.444444,
    "data": 33.444444,
 }]

]

Заранее благодарен

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

То, что Вы не можете понять, мы поняли, а вопрос-то Ваш в чём? Где Ваши попытки? Или Вы и не пытались?

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

А я так и вообще не понял - массив объектов нужен в итоге или объект с массивами? 0_о

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

gladkih пишет:

Добрый день форумчане. Уже замучался. Не могу понять как в NestedArray сделать NestedObject что бы получилось типа вот такого

В Вашем случае, как я понимаю, никак. Тут думать и читать надо.

p-a-h-a
Offline
Зарегистрирован: 17.01.2019
gladkih
Offline
Зарегистрирован: 08.02.2021
StaticJsonDocument<200> doc;
JsonArray array = doc.to<JsonArray>();
array.add("hello");
JsonArray nested = array.createNestedArray();
JsonObject nest1 = array.createNestedObject();
JsonObject nest2 = array.createNestedObject();
nest1["GPS_"]= 55;
nest2["GPS_"]= 33;
nested.add(nest1);
nested.add(nest2);
serializeJsonPretty(array, Serial);
  delay(300);
  Serial.println("NEXT");
  delay(300);
 
получаем следующее 
[
  "hello",
  [
    {
      "GPS_latitude =": 77
    },
    {
      "GPS_ =": 33
    }
  ],
  {
    "GPS_latitude =": 77
  },
  {
    "GPS_ =": 33
  }
]NEXT
 
 
проблема что я никак не пойму как получить вот такое
[
  "hello",
  [
    {
      "GPS_latitude =": 77
    },
    {
      "GPS_ =": 33
    }
  ],
]NEXT
 

 

p-a-h-a
Offline
Зарегистрирован: 17.01.2019

gladkih пишет:

StaticJsonDocument<200> doc;
JsonArray array = doc.to<JsonArray>();
array.add("hello");
JsonArray nested = array.createNestedArray();
JsonObject nest1 = array.createNestedObject();
JsonObject nest2 = array.createNestedObject();
nest1["GPS_"]= 55;
nest2["GPS_"]= 33;
nested.add(nest1);
nested.add(nest2);
serializeJsonPretty(array, Serial);
  delay(300);
  Serial.println("NEXT");
  delay(300);
 
получаем следующее 
[
  "hello",
  [
    {
      "GPS_latitude =": 77
    },
    {
      "GPS_ =": 33
    }
  ],
  {
    "GPS_latitude =": 77
  },
  {
    "GPS_ =": 33
  }
]NEXT
 
 
проблема что я никак не пойму как получить вот такое
[
  "hello",
  [
    {
      "GPS_latitude =": 77
    },
    {
      "GPS_ =": 33
    }
  ],
]NEXT
 

 


Используйте асистента https://arduinojson.org/v6/assistant/# с параметром serialize. Во первых никак т.к. с ошибкой json написан.
StaticJsonDocument<128> doc;

doc.add("hello");

JsonArray doc_1 = doc.createNestedArray();
doc_1[null]["GPS_latitude ="] = 77;
doc_1[null]["GPS_ ="] = 33;

serializeJson(doc, output);

Получится:
[
"hello",
[
{
"GPS_latitude =": 77
},
{
"GPS_ =": 33
}
]
]

sadman41
Offline
Зарегистрирован: 19.10.2016

Если JSON формируется только для отсылки вовне, то вполне можно обойтись обычным snprintf_P().

gladkih
Offline
Зарегистрирован: 08.02.2021

Вроде разобрался, но как оказалось не совсем

StaticJsonDocument<10000> doc;          
JsonArray nested = doc.createNestedArray("GPSData");
JsonObject nest[3] = nested.createNestedObject();
 
когда пишу так то получаю 
{
  "GPSData": [
    {
      "date_year": 1,
      "date_month": 2,
      "date_date": 3
    },
    {
      "date_year": 4,
      "date_month": 5,
      "date_date": 6
    },
    {
      "date_year": 7,
      "date_month": 8,
      "date_date": 9
    }
  ]
}
 
вроде то что надо. но у меня nest[3] должно быть такого вида nest[А] где А -переменная величина. т.е. я вызвал подпрограмму с А=3 серелизовал документ, выдал его. Потом А=6 опять вызвал подпрограмму. но при попытке записать в таком виде
 
StaticJsonDocument<10000> doc;          
JsonArray nested = doc.createNestedArray("GPSData");
JsonObject nest[BUFFER_POST_GPS] = nested.createNestedObject();

выдает ошибку

variable-sized object 'nest' may not be initialized. 

p-a-h-a
Offline
Зарегистрирован: 17.01.2019

На сколько помню, примерно так:
DynamicJsonDocument doc(1000);
for(int a = 0; a < 4; a++){
doc["GPSData"][a]["date_year"]=a*2;
doc["GPSData"][a]["date_month"]=a*2+1;
}

gladkih
Offline
Зарегистрирован: 08.02.2021

Сорри за тупость но у меня все равно выдает ошибку

p-a-h-a
Offline
Зарегистрирован: 17.01.2019

где ошибка?