2017-09-25 3 views
-1

[this REST API] [1]에서 Ajax 응답을 추출해야합니다. 이에 대한 코드 스 니펫을 제공하여 제가 여기서 멈출 수 있도록하십시오.Arduino 및 ESP8266에서 JSON 구문 분석이 실패했습니다.

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 응답을 읽고 문자열로 파싱하는 방법을 알려주십시오.

+0

무엇을 시도하셨습니까? 코드가 있습니까? – sheplu

+0

[이 페이지] (https://www.arduino.cc/en/Tutorial.WiFi101WeatherAudioNotifier)는 ArduinoJson Library를 사용하여 Arduino에서 json 파싱에 대한 자습서입니다. –

+0

"Nope, nope and nope에 대한 코드 스 니펫을 제공해주십시오. 이것은 "나를위한 코드 작성"웹 사이트가 아닙니다 ... – dda

답변

0

많은 히트와 재판을 한 후에 해결책을 찾았습니다 .WireClient를 읽었습니다. Json 응답으로 쓰레기 값을 거의주지 못했습니다. ArduinoJson 라이브러리는 쓰레기 값을 파싱 할 수 없었습니다. 나는 HttpClient를 사용하여 응답을 읽었고 ArduinoJson이 구문 분석 할 수있는 명확한 Json을 반환하고 이제 코드가 올바르게 작동합니다.