Повторное использование объектов Arduino Json

#json #arduino

Вопрос:

Эй, ребята, я работаю над проектом, который делает HTTP-вызовы API. Этот API возвращает JSON. И я использовал библиотеку Arduino JSON, но столкнулся с проблемой.

Я думаю, что не могу записать данные в объект JSON.

У меня есть цикл for, и я совершаю x вызовов API с другим параметром. Ответ, который я хочу сохранить в объекте JSON, затем скопировать результат в структуру typedef и затем работать оттуда.

У меня есть следующая функция:

 void requestHandler::requestFromApi(String coinId, namePriceTimeStruct *namePriceTimeStruct, uint8_t debug){  if (Serial){  Serial.println("Class requestHandler, function: requestFromApi");  }  String completPath = REQUEST_ADDRESS_API   coinId;  static char buffer[64];  if (Serial amp;amp; debug){  sprintf(buffer,"Making request to %s", completPath.c_str());  Serial.println(buffer);   }  String payload;  HTTPClient http;  http.begin(clientHttpCall, completPath);   int httpCode = http.GET();   if (httpCode gt; 0) {   payload = http.getString(); // When I print this, the request is succesfull.  }  http.end();    JsonObject filter_data = filter.createNestedObject("data");  filter_data["id"] = true;  filter_data["price"] = true;  filter_data["price_timestamp"] = true;   DeserializationError error = deserializeJson(doc, payload, DeserializationOption::Filter(filter));   if (error) {  if (Serial){  Serial.print(F("deserializeJson() failed: "));  Serial.println(error.f_str());  }  } else{  namePriceTimeStruct-gt;idCoin = doc["data"]["id"].aslt;Stringgt;();  namePriceTimeStruct-gt;priceCoin = doc["data"]["price"].aslt;Stringgt;();  String correctDate = doc["data"]["price_timestamp"].aslt;Stringgt;();  correctDate.replace("Z", "");  namePriceTimeStruct-gt;timeStamp = correctDate;  static char buffer[64];  if (Serial amp;amp; debug){  sprintf(buffer,"data struct %s, %s, %s", namePriceTimeStruct-gt;idCoin, namePriceTimeStruct-gt;priceCoin, namePriceTimeStruct-gt;timeStamp);  Serial.println(buffer);   sprintf(buffer,"data json %s, %s, %s", doc["data"]["id"].aslt;Stringgt;(), doc["data"]["price"].aslt;Stringgt;(), doc["data"]["price_timestamp"].aslt;Stringgt;());  Serial.println(buffer);   }  } }  

Это серийный номер.печать.. С первой попытки это работает хорошо, затем со второй попытки в объекте JSON ничего нет. Есть ли что-то, чего мне не хватает с объектом / классом JSON, или я должен сделать это по-другому.

 Class requestHandler, function: requestFromApi Making request to http://api.iot.hva-robots.nl/crypto/ADA data struct ADA, 1.93019129, 2021-11-10T10:51:00 data json ADA, 1.93019129, 2021-11-10T10:51:00 Class requestHandler, function: requestInsertDataCoin Making call to URL: http://oege.ie.hva.nl:8112/insert/data/ADA/2021-11-10T10:51:00/1.93019129  Class requestHandler, function: requestFromApi Making request to http://api.iot.hva-robots.nl/crypto/BNB data struct null, null, null data json null, null, null Class requestHandler, function: requestInsertDataCoin Making call to URL: http://oege.ie.hva.nl:8112/insert/data/null/null/null  Class requestHandler, function: requestFromApi Making request to http://api.iot.hva-robots.nl/crypto/BTC data struct null, null, null data json null, null, null