2015-08-13 37 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()); 

我没有测试它自己,但这样的事情应该工作。您需要跳过响应标题。