I'm trying to de serialize an array of JSON objects into a struct. Following the instructions given by the Arduino JSON assistant, I managed to produce this helper function:
void JsonPreprocessor(const char* buf)
{
StaticJsonDocument<96> filter;
JsonObject filter_ResponseData_Metros_0 = filter["ResponseData"]["Metros"].createNestedObject();
filter_ResponseData_Metros_0["Destination"] = true;
filter_ResponseData_Metros_0["ExpectedDateTime"] = true;
filter_ResponseData_Metros_0["Deviations"] = true;
StaticJsonDocument<512> doc;
DeserializationError error = deserializeJson(doc, buf, DeserializationOption::Filter(filter));
if (error) {
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.f_str());
return;
}
JsonArray ResponseData_Metros = doc["ResponseData"]["Metros"];
for (int i = 0; i < MAX_ELEMENTS; i++)
{
strcpy(dep_arr[i].destination, ResponseData_Metros[i]["Destination"]);
strcpy(dep_arr[i].destination, ResponseData_Metros[i]["ExpectedDateTime"]);
}
}
The function writes into an array of structs declared like this:
struct Departure {
char* destination;
char* departure;
int deviation;
} depart;
struct Departure dep_arr[MAX_ELEMENTS];
And the JSON passed as a constant character array to the preprocessor function. Uploading and running this function keeps crashing my ESP8266 without any debug output. Without posting the whole json object, which is long enough as is without the filters, My object array in JSON looks similar to this after filtering:
{
"ResponseData": {
"Metros": [
{
"Destination": "Destination_1",
"ExpectedDateTime": "2021-04-29T05:15:30",
"Deviations": 1
},
{
"Destination": "Destination_2",
"ExpectedDateTime": "2021-04-29T05:21:30"
},
{
"Destination": "Destination_2",
"ExpectedDateTime": "2021-04-29T05:30:30"
},
{
"Destination": "Destination_1",
"ExpectedDateTime": "2021-04-29T05:36:30"
},
etc...
]
}
}
In my test code I've defined my MAX_ELEMENTS macro to be 3.
I'm at a complete loss due to not having any debug output. I'm using ArduinoJson6 and my code is written and compiled on Arduino IDE 2.0.0-beta.5