gpt4 book ai didi

c - 使用 cJSON 读取 JSON 数组

转载 作者:太空狗 更新时间:2023-10-29 16:46:00 24 4
gpt4 key购买 nike

我正在尝试使用由 Dave Gamble 编写的 cJSON 库来读取以下 JSON 数组:

"items": 
[
{
"name": "command",
"index": "X",
"optional": "0"
},
{
"name": "status",
"index": "X",
"optional": "0"
}
]

来自阅读他的 documentation ,我找到了读取单个对象的方法,但没有关于数组的方法,而且我无法从给出的示例中推测如何做到这一点。

这是我正在尝试的:

cJSON* request_json = NULL;
cJSON* items = cJSON_CreateArray();
cJSON* name = NULL;
cJSON* index = NULL;
cJSON* optional = NULL;

request_json = cJSON_Parse(request_body);

items = cJSON_GetObjectItem(request_json, "items");

name = cJSON_GetObjectItem(items, "name");
index = cJSON_GetObjectItem(items, "index");
optional = cJSON_GetObjectItem(items, "optional");

我知道这是错误的,不仅因为它不起作用,而且我不知道如何改正它。

显然,我需要循环读取数组每个索引的所有条目的过程。不过,我不知道该怎么做,因为我不知道我应该在这段代码中的什么地方使用索引,或者它是否是正确的开始。有一个 cJSON_GetArrayItem(),但它只需要一个数字(大概是一个索引)并且没有字符串来指示它想要哪个字段。

最佳答案

文档提到了 parse_object()。

我认为这是你需要做的。

void parse_object(cJSON *root)
{
cJSON* name = NULL;
cJSON* index = NULL;
cJSON* optional = NULL;

int i;

cJSON *item = cJSON_GetObjectItem(items,"items");
for (i = 0 ; i < cJSON_GetArraySize(item) ; i++)
{
cJSON * subitem = cJSON_GetArrayItem(item, i);
name = cJSON_GetObjectItem(subitem, "name");
index = cJSON_GetObjectItem(subitem, "index");
optional = cJSON_GetObjectItem(subitem, "optional");
}
}

调用此函数为

request_json = cJSON_Parse(request_body);
parse_object(request_json);

关于c - 使用 cJSON 读取 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16900874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com