Синтаксический анализатор JSON терпит неудачу из-за того, что отправляется количество байтов
esp8266
json
Извините, что я новичок в этом деле. Я пытаюсь прочитать ответ JSON с моего сайта с помощью ESP8266, но он продолжает терпеть неудачу. Я использую следующий код:
WiFiClientSecure httpsClient; //Declare object of class WiFiClient
httpsClient.setInsecure();
httpsClient.setTimeout(15000); // 15 Seconds
if (httpsClient.connect(host, httpsPort)) {
String Data ="/IOT/Device_Setup.php?MAC="+deviceMAC;
httpsClient.print(String("POST ") + Data + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
while (httpsClient.connected()) {
String line = httpsClient.readStringUntil('\n');
Serial.println(line);
if (line == "\r") {
Serial.println("headers received");
break;
}
}
String payload = "";
while (httpsClient.available()) {
char c = httpsClient.read();
payload=payload+c;
}
Serial.println(payload);
// Allocate JsonBuffer
// Use arduinojson.org/assistant to compute the capacity.
const size_t capacity = JSON_OBJECT_SIZE(3) + JSON_ARRAY_SIZE(2) + 60;
StaticJsonDocument<200> jsonBuffer;
// Parse JSON object
DeserializationError error = deserializeJson(jsonBuffer, payload);
if (!error) {
const char* Switch = jsonBuffer["Switch"];
const char* LED = jsonBuffer["LED"];
const char* DHT = jsonBuffer["DHT"];
// Decode JSON/Extract values
Serial.print("Switch = ");
Serial.println(Switch);
Serial.print("LED = ");
Serial.println(LED);
Serial.print("DHT = ");
Serial.println(DHT);
}
}
Когда я распечатываю полезную нагрузку после заголовка, я получаю следующие выходные данные:
22
{"Переключатель":"0","СВЕТОДИОД":"0","DHT":"1"}
0
Я знаю, что 22-это шестнадцатеричное значение для числа отправляемых байтов. Есть ли способ игнорировать числа и просто использовать код JSON?
@Dan, 👍1
Обсуждение0
Смотрите также:
- NodeMCU (Arduino IDE) «DynamicJsonBuffer» не был объявлен в этой области
- Чтение файла из SPIFFS в nodemcu с использованием ArduinoJson
- Последовательная связь от Arduino до ESP8266 NodeMCU работает, но от NodeMCU до Arduino не работает
- Проанализировать большой ответ json с помощью ESP8266
- Публиковать данные json в mqtt
- Какой максимальный размер статического документа Json в Arduino JSON?
- Чтение файла json из SPIFFS и отображение содержащейся в нем информации на встроенной веб-странице
- ESP8266 Arduino Json object array десериализация в структуру
как же он терпит неудачу?, @jsotola
затем происходит фрагментарное кодирование передачи. установите длину содержимого на сервере, чтобы избежать этого., @Juraj
Согласитесь, это [Chunked Transfer Encoding](https://fr.wikipedia.org/wiki/Chunked_transfer_encoding), используйте HTTP/1.0, чтобы избежать этого. См. Также [JsonHttpClient.ino](https://arduinojson.org/v6/example/http-client/) вкл. arduinojson.org..., @Benoit Blanchon
Спасибо всем. Добавление размера в заголовок сработало., @Dan