#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