怎么用C语言解析JSON
时间: 2023-09-19 08:10:18 浏览: 135
课程作业-基于C语言实现的JSON解析器源码(含节点创建、解析、封装、输出等功能).zip
5星 · 资源好评率100%
在 C 语言中,解析 JSON 通常涉及以下步骤:
1. 读取 JSON 数据到内存中;
2. 解析 JSON 数据;
3. 对解析后的数据进行操作。
下面是一个简单的示例程序,展示如何使用 cJSON 库解析 JSON 数据:
```c
#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"
int main()
{
char *json_string = "{\"name\":\"Alice\",\"age\":20,\"gender\":\"female\"}";
cJSON *json = cJSON_Parse(json_string);
if (json == NULL) {
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
return 1;
}
cJSON *name = cJSON_GetObjectItemCaseSensitive(json, "name");
char *name_str = cJSON_GetStringValue(name);
printf("name: %s\n", name_str);
cJSON *age = cJSON_GetObjectItemCaseSensitive(json, "age");
int age_int = cJSON_GetNumberValue(age);
printf("age: %d\n", age_int);
cJSON *gender = cJSON_GetObjectItemCaseSensitive(json, "gender");
char *gender_str = cJSON_GetStringValue(gender);
printf("gender: %s\n", gender_str);
cJSON_Delete(json);
return 0;
}
```
在这个示例程序中,我们首先定义一个 JSON 字符串 `json_string`,然后使用 `cJSON_Parse` 函数将其解析成一个 `cJSON` 对象。如果解析失败,则输出错误信息。接着,我们使用 `cJSON_GetObjectItemCaseSensitive` 函数获取 JSON 对象中的各个属性值,并使用 `cJSON_GetStringValue` 和 `cJSON_GetNumberValue` 函数将其转换为对应的 C 语言数据类型。最后,我们使用 `cJSON_Delete` 函数释放内存。
注意,这个示例程序中使用的 cJSON 库是开源的第三方库,需要先下载并安装。也可以使用其他的 JSON 解析库,例如 jansson 和 json-c 等。
阅读全文