我正在尝试使用由Dave Gamble编写的cJSON库来读取以下JSON请求:
{"id":"8358441244995838759","jsonrpc":"2.0","method":"addext",
"params":["<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>
<trunks id=\"0\"><end_ch>3</end_ch>
<gateway>172.20.222.52</gateway>
<interface_type>E231</interface_type>
<name>Mumbai_Avaya</name>
<start_ch>12</start_ch>
<sub_type>E1PRI</sub_type></trunks>"]}
我能够检索&#34; id&#34;和&#34;方法&#34;通过使用下面的代码,但无法检索或打印内部的值&#34; params&#34;这是一个XML字符串。 我想打印&#34; params&#34;。
内的任何内容 cJSON *cjson, *method_obj;
char *methodname;
char *params;
cjson = cJSON_Parse(buf);
method_obj = cJSON_GetObjectItem(cjson, "method");
methodname = method_obj->valuestring;
printf("method name %s\n", methodname);
method_obj = cJSON_GetObjectItem(cjson, "id");
id = method_obj->valueint;
char *str = method_obj->valuestring;
printf("id %s\n", str);
method_obj = cJSON_GetObjectItem(cjson, "params");
params=method_obj->valuestring;
printf("Params [ ] %s\n", params);
请提供任何建议。
先谢谢。
答案 0 :(得分:0)
将method_obj->valuestring
更改为method_obj->child->valuestring
(在检查child != NULL
之后)或拥有生成JSON请求的服务,如果不需要,则不使用数组。
答案 1 :(得分:0)
console.clear();
var datas = {
"login": "iwenyou",
"id": 20179472,
"avatar_url": "https://avatars.githubusercontent.com/u/20179472?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/iwenyou",
"html_url": "https://github.com/iwenyou",
"followers_url": "https://api.github.com/users/iwenyou/followers",
"following_url": "https://api.github.com/users/iwenyou/following{/other_user}",
"gists_url": "https://api.github.com/users/iwenyou/gists{/gist_id}",
"starred_url": "https://api.github.com/users/iwenyou/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/iwenyou/subscriptions",
"organizations_url": "https://api.github.com/users/iwenyou/orgs",
"repos_url": "https://api.github.com/users/iwenyou/repos",
"events_url": "https://api.github.com/users/iwenyou/events{/privacy}",
"received_events_url": "https://api.github.com/users/iwenyou/received_events",
"type": "User",
"site_admin": false,
"name": null,
"company": null,
"blog": null,
"location": "SF Bay Area",
"email": null,
"hireable": null,
"bio": "A crawling programer...",
"public_repos": 3,
"public_gists": 0,
"followers": 0,
"following": 0,
"created_at": "2016-06-28T04:45:54Z",
"updated_at": "2016-07-10T03:47:33Z"
}
var output = "<div>" + datas['avatar_url'] + " | " + datas.login + "</div>";
console.log(output);
document.write(output);
是JSON数组
像这样使用params
(和cJSON_GetArrayItem
)API:
cJSON_GetArraySize