请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC3220
我遇到-202解析错误、您可以看看为什么吗?
json_parse (jsonObjHandle、data、
strlen(数据));
其中:
Data={“持续时间”:2}, 是 httpTask()的 http GET 响应;在 SDK 的 http GET 示例中。 这里的代码中没有任何变化。 我得到 UART 打印的{"Duration":2}。
对于上述情况、JSON_PARIS 将返回-200。
我通过将数据设置为宏来尝试的相同操作、并将返回'0 '已完成。
示例:
#define NEWDATA{"Duration":2}
json_parse (jsonObjHandle、NEWDATA、
strlen (NEWDATA );//这将返回'0'
我的服务器仅响应 JSON、我能不能知道这里有什么问题?
如需更多信息、请参阅以下代码:
|
1
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18
19.
20.
21.
22.
23
24
25
26
27.
28.
29.
30
31.
32
33.
34
35.
36.
37.
38.
39.
40
41.
42.
43.
44.
45.
46.
47.
48
49
50
51.
52.
53.
54
55
56.
57.
58.
59.
60
61.
62.
63.
64
65
66
67
68
69
70
71.
72.
73.
74.
75
76.
77
78
79
80
81.
82.
83.
84
85.
86
87
88
89
|
boolmoreDataFlag = false; chardata[HTTP_MIN_RECV]; int16_t ret = 0; int16_t len = 0; Display_printf(display, 0, 0, "Sending a HTTP GET request to '%s'\n", HOSTNAME); HTTPClient_Handle httpClientHandle; int16_t statusCode; httpClientHandle = HTTPClient_create(&statusCode,0); if(statusCode < 0) { printError("httpTask: creation of http client handle failed", statusCode); } ret = HTTPClient_setHeader(httpClientHandle, HTTPClient_HFIELD_REQ_USER_AGENT, USER_AGENT,strlen(USER_AGENT), HTTPClient_HFIELD_PERSISTENT); if(ret < 0) { printError("httpTask: setting request header failed", ret); } ret = HTTPClient_connect(httpClientHandle,HOSTNAME,0,0); if(ret < 0) { printError("httpTask: connect failed", ret); } ret = HTTPClient_sendRequest(httpClientHandle,HTTP_METHOD_GET,REQUEST_GET_URI, NULL,0, 0); if(ret < 0) { printError("httpTask: send failed", ret); } if(ret != HTTP_SC_OK) { printError("httpTask: cannot get status", ret); } Display_printf(display, 0, 0, "HTTP Response Status Code: %d\n", ret); len = 0; do { ret = HTTPClient_readResponseBody(httpClientHandle, data, sizeof(data), &moreDataFlag); if(ret < 0) { printError("httpTask: response body processing failed", ret); } Display_printf(display, 0, 0, "%.*s \r\n",ret,data); strcpy(builtBuff, data); // JSON Parse Start // createHttpGetTemplate(); createHttpGetObject(); parseHttpGet(data); getValueHttpGet(); // JSON Parse End // len += ret; } while(moreDataFlag); Display_printf(display, 0, 0, "Received %d bytes of payload\n", len); ret = HTTPClient_disconnect(httpClientHandle); if(ret < 0) { printError("httpTask: disconnect failed", ret); } HTTPClient_destroy(httpClientHandle); return(0); |
有关 json 解析的信息、请参见下面的
|
1
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18
19.
20.
21.
22.
23
24
25
26
27.
28.
29.
30
31.
32
33.
34
35.
36.
37.
38.
39.
40
41.
42.
43.
44.
45.
46.
47.
48
49
|
voidcreateHttpGetTemplate(void) { int16_t retVal; char*templatestr = "{" "\"Duration\":int32}"; templateSize = strlen(templatestr); Display_printf(display, 0, 0, "str size = %d \n", strlen(templatestr)); retVal = Json_createTemplate(&templateHandle, templatestr, templateSize); Display_printf(display, 0, 0, "Json_createTemplate = %d \n", retVal); } voidcreateHttpGetObject(void) { int16_t retVal; /* convert object size received from uart into integer */ objSize = 1024; // atoi(objSizeBuffer); retVal = Json_createObject(&jsonObjHandle,templateHandle,objSize); Display_printf(display, 0, 0, "Json_createObject = %d \n", retVal); } voidparseHttpGet(char*buf) { int16_t retVal; retVal = Json_parse(jsonObjHandle,buf, strlen(buf)); Display_printf(display, 0, 0, "Json_parse = %d \n", retVal); } voidgetValueHttpGet(void) { int16_t retVal; char*key = "\"Duration\""; uint32_t value; uint16_t valueSize = 4; retVal = Json_getValue(jsonObjHandle,key,&value,&valueSize); Display_printf(display, 0, 0, "Json_getValue = %d \n", retVal); Display_printf(display, 0, 0, "Received Duration = %d \n", value); } |