2015-08-13 41 views
0

我想從一個URL獲取JSON並將其存儲(使用aJSON庫)在一個變量中。我怎麼做?該aJSON GitHub上說:Arduino JSON庫

爲了解析與aJson這樣的結構,你可以將它轉換爲 對象樹:

aJsonObject* jsonObject = aJson.parse(json_string); 

(假設你有在變量json_string JSON字符串 - 作爲一個 的char *)

而且我的代碼:

if (client.connect(server, 80)) { 
    Serial.println(F("connected")); 
    String request = "GET /v2/data/5c:31:3e:05:fe:2a/last HTTP/1.1"; 
    client.println(request); 
    client.println("Host: api.iot.ciandt.com"); 
    client.println("User-Agent: Arduino-CIOT"); 
    client.println("Content-Type: application/json"); 
    client.println("Connection: close"); 
    client.println(); 
    delay(5); 

但我無法將JSON字符串作爲char *置於變量json_string中。

的JSON是:

{"sensor":{"id":"5c:31:3e:05:fe:2a","name":"Garagem","metadata":{"Base":"CPS","Building":"23B","Capacity":"20","Room Name":"Garagem","Photo":"http://suaobra.com.br/uploads/dicas/garage-ferrari-.jpg","hasProjector":"true","Calendar Id":"a","Floor":"Térreo"},"userId":"100937898336693053236","projectId":4805278667112448,"serialNumber":"TG-20150810-1000000","status":"ASSOCIATED","batteryPowered":false},"data":{"id":5713573250596864,"sensorId":"5c:31:3e:05:fe:2a","updateTime":1439475125592,"content":{"busy":false},"uptime":60000,"battery":100,"firmwareVersion":"1.0","ipAddress":"198.162.8.4","ssid":"IOT"}} 
+0

你使用什麼API來進行HTTP請求? – ThomasW

+0

我包括:Ethernet.h和SPI.h –

+0

我剛試過一個測試,我收到錯誤「傳感器不存在」。它在工作之前。傳感器位置是否改變? – ThomasW

回答

0

試試這個:

String body = client.readString(); 
aJsonObject* root = aJson.parse((char*)body.c_str()); 

我沒有測試它自己,但這樣的事情應該工作。您需要跳過響應標題。