当先锋百科网

首页 1 2 3 4 5 6 7

在C语言中,解析JSON数据需要使用第三方库,常见的库有两种:cJSON和jansson。

下面以cJSON为例介绍如何使用。

#include <stdio.h>
#include <cjson/cJSON.h>
int main() {
char *json_str = "{\"name\":\"Alice\",\"age\":20}";
cJSON *json = cJSON_Parse(json_str); // 解析JSON字符串
if (json != NULL) {
cJSON *name = cJSON_GetObjectItemCaseSensitive(json, "name"); // 获取字符串类型的值
cJSON *age = cJSON_GetObjectItemCaseSensitive(json, "age"); // 获取数值类型的值
if (cJSON_IsString(name) && cJSON_IsNumber(age)) { // 判断类型是否正确
printf("%s is %d years old.\n", name->valuestring, age->valueint); // 打印结果
}
cJSON_Delete(json); // 释放内存
} else {
printf("JSON string is invalid.\n");
}
return 0;
}

以上代码解析了一个JSON对象,取出其中的name和age字段,分别打印出来。其中例子中的JSON字符串为:

{
"name": "Alice",
"age": 20
}

函数cJSON_Parse用于解析JSON字符串,返回一个指向cJSON结构体的指针。函数cJSON_GetObjectItemCaseSensitive用于获取JSON对象字段的值,第一个参数为JSON对象,第二个参数为字段名。在获取字段值的时候需要判断类型是否正确,函数cJSON_IsString和cJSON_IsNumber用于判断是否为字符串类型和数值类型。最后需要使用cJSON_Delete释放内存。