用cjson获取json数据中的值
时间: 2023-09-30 12:11:35 浏览: 97
cJSON解析json数据
5星 · 资源好评率100%
要使用CJSON库获取JSON数据中的值,您可以使用CJSON提供的函数来访问和提取JSON对象中的键值对。下面是一个示例代码,演示了何使用CJSON库来获取JSON数据中定键的值:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cJSON.h"
int main() {
const char* json_data = "{\"key1\": \"value1\", \"key2\": 42, \"key3\": [1, 2, 3]}";
cJSON* root = cJSON_Parse(json_data);
if (root == NULL) {
printf("Failed to parse JSON data!\n");
return 1;
}
cJSON* value1 = cJSON_GetObjectItemCaseSensitive(root, "key1");
if (cJSON_IsString(value1) && (value1->valuestring != NULL)) {
printf("Value of key1: %s\n", value1->valuestring);
}
cJSON* value2 = cJSON_GetObjectItemCaseSensitive(root, "key2");
if (cJSON_IsNumber(value2)) {
printf("Value of key2: %d\n", value2->valueint);
}
cJSON* value3 = cJSON_GetObjectItemCaseSensitive(root, "key3");
if (cJSON_IsArray(value3)) {
int array_size = cJSON_GetArraySize(value3);
printf("Size of key3 array: %d\n", array_size);
for (int i = 0; i < array_size; i++) {
cJSON* item = cJSON_GetArrayItem(value3, i);
if (cJSON_IsNumber(item)) {
printf("Element %d: %d\n", i, item->valueint);
}
}
}
cJSON_Delete(root);
return 0;
}
```
在上面的示例中,我们首先定义了一个JSON字符串 `json_data`,其中包含了多个键值对。然后使用 `cJSON_Parse` 函数将其解析为一个 `cJSON` 对象 `root`。接下来,我们使用 `cJSON_GetObjectItemCaseSensitive` 函数来获取特定键的值,并使用相应的类型检查函数来验证值的类型。根据值的类型,我们可以使用不同的函数来获取值,并将其打印出来。
请注意,在使用此示例代码之前,您需要先下载并编译CJSON库,并将其头文件和库文件正确地包含到您的项目中。
阅读全文