C: 如何解析 Json 请求中的值?

标签 c json json-rpc cjson

我正在尝试使用 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>"]}

我可以使用下面的代码检索“id”和“method”,但无法检索或打印“params”(XML 字符串)内的值。 我想打印“params”内的任何内容。

 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);

请提出任何建议。

提前致谢。

最佳答案

要么将 method_obj->valuestring 更改为 method_obj->child->valuestring (在检查 child != NULL 之后),或者将生成 JSON 请求的服务,如果不需要,则不使用数组。

关于C: 如何解析 Json 请求中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38429820/

相关文章:

c - 变量声明完成后一次性初始化/定义结构变量

javascript - 跨多个选择框拆分 JSON 数组

javascript - 我如何使用 Lambda 函数以 JSON 进行响应

java - Spring 框架 3 中的 JSON-RPC

c# - ASP.NET Core JSON-RPC

c - 如何将字符串复制到 C 中的数组?

c - 首选尽可能短的类型

c++ - 初始化数组之间的区别

arrays - 使用 json_array_elements(json) 并获取项目排名

golang JSON RPC授权