解析JSON响应?

时间:2014-04-06 00:40:51

标签: c++ json

我试图在我的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?感谢。

1 个答案:

答案 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;
}