我试图在我的arduino中解析来自网络服务器的JSON响应,以打开和关闭LED灯。我正在使用WiFi client repeating example to make a GET request to my server。
以下是我发出GET请求的部分,它将JSON响应打印到串口:
client.println("GET /abc/bze/ HTTP/1.1");
client.println("Host: www.abc.ca");
client.println("User-Agent: ArduinoWiFi/1.1");
client.println("Connection: close");
client.println();
我的JSON看起来像这样
{"lightstatus":"on"}
但是,我如何仅解析JSON响应以便我可以用它来控制我的LED?感谢。
答案 0 :(得分:2)
如果你想一般解析JSON,阻力最小的路径是a good library。
然而,,你只会接受像你的例子一样简单的东西,你可能会侥幸骇人听闻。不可否认,以下是 C ,这对我来说最容易在几分钟内完成,但我确定您将它转换为 C ++没有任何困难
#include <stdio.h>
#define BUFLEN (100)
int main(void) {
char *json[] = {
"{\"lightstatus\":\"on\"}",
"{\"lightstatus\":\"off\"}",
"{\"foo\":\"bar\"}",
"{\"baz\":\"quux\"}"
};
char key[BUFLEN];
char val[BUFLEN];
for(int i=0; i<sizeof(json)/sizeof(char *); i++) {
sscanf(json[i], "{\"%[^\"]\":\"%[^\"]\"}", key, val);
printf("The value of '%s' is '%s'\n", key, val);
}
return 0;
}