簡體   English   中英

Arduino 和 ESP8266 中的 JSON 解析失敗

[英]JSON parsing failing in Arduino and ESP8266

我必須從 [this REST API][1] 中提取 Ajax 響應。 請為此提供一個代碼片段,以便我可以繼續我被困在這里。

我需要從http://tutor4study.com/forms/ajaxDeviceValue讀取 JSON 數據,然后我必須解析它。

enter code here
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ArduinoJson.h>

const char* ssid = "ssid";
const char* password = "password";

const char* host = "tutor4study.com";
const int httpsPort = 80;
 WiFiClient client;
 WiFiClient readClient;
 String sensorValue1 = "5555";
 String sensorValue2 = "9999";
 String readUrl = "";
 char readLine;
 String readResponse ="";
 String readJsonResponse ="";



void setup() {
               Serial.begin(115200);
               Serial.println();
               Serial.print("connecting to ");
               Serial.println(ssid);
               WiFi.begin(ssid, password);
               while (WiFi.status() != WL_CONNECTED) {
                                                        delay(500);
                                                        Serial.print(".");
                                                      }
               Serial.println("");
               Serial.println("WiFi connected");
               Serial.println("IP address: ");
               Serial.println(WiFi.localIP());
               Serial.print("connecting to ");

                pinMode(4, OUTPUT);
                pinMode(5, OUTPUT);
               // yield();

            }

StaticJsonBuffer<200> jsonBuffer;



void readConnect(){
                   if(!readClient.connect(host,httpsPort)){
                                                            Serial.println("connection failed for readCLient");
                                                            ESP.reset();
                                                            return;
                    }
                   readUrl = "/forms/ajaxDeviceValue";
                    Serial.print("requesting URL: ");
                    Serial.println(readUrl);
                    readClient.print(String("GET ")+readUrl+" HTTP/1.1\r\n"+
                    "Host: "+host+"\r\n"+
                    "Connection: close\r\n\r\n");
                    while(readClient.connected()){
                                                  readLine = readClient.read();
                                                  Serial.print(readLine);
                                                  readResponse += readLine;                 
                      }

                      JsonObject& root = jsonBuffer.parseObject(readResponse);

    if (!root.success()) {
    Serial.println("parseObject() failed");
    return;
    }

  }

void loop() {
              readConnect();

            }

以上是我的代碼。 請查看代碼,讓我知道如何讀取 url /ajaxDeviceValue 的 JSON 響應並將其解析為字符串。

經過大量點擊和試用后,我找到了解決方案,我正在閱讀 WiFiClient 。它給了我一些帶有 Json 響應的垃圾值。由於垃圾值 ArduinoJson 庫無法解析它。 我使用 HttpClient 讀取響應,它返回清晰的 Json,ArduinoJson 能夠解析它,現在代碼工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM