将上面代码中获取的键名放到一个列表里面
时间: 2024-02-24 09:55:29 浏览: 64
你可以使用一个字符串数组来存储JSON对象中所有的键名,代码如下:
```
json_t *json_obj = json_loads(json_str, 0, NULL); // json_str为JSON字符串
if (json_obj == NULL) {
// JSON对象为空,处理异常
}
void *iter = json_object_iter(json_obj);
size_t num_keys = json_object_size(json_obj); // 获取JSON对象中键值对的数量
const char **keys = (const char **)malloc(num_keys * sizeof(const char *)); // 分配存储键名的字符串数组
size_t i = 0;
while (iter) {
const char *key = json_object_iter_key(iter);
keys[i++] = key; // 将键名添加到字符串数组中
iter = json_object_iter_next(json_obj, iter);
}
// 处理键名数组
for (i = 0; i < num_keys; i++) {
printf("key[%zu]: %s\n", i, keys[i]);
}
free(keys); // 释放存储键名的字符串数组的内存
json_decref(json_obj);
```
上述代码中,我们首先使用`json_loads()`函数将JSON字符串解析为JSON对象,然后使用`json_object_size()`函数获取JSON对象中键值对的数量。接着,我们使用`malloc()`函数动态分配一个存储键名的字符串数组,并使用`json_object_iter_key()`函数将JSON对象中所有的键名添加到该数组中。最后,我们使用一个循环来处理字符串数组中的键名。注意,在使用完字符串数组后,需要使用`free()`函数释放其内存。
阅读全文