cJson系列
如何调用cjson库
- cJson系列
- 1.安装 cJSON 库
- 2. 包含头文件
- 3. 解析 JSON 字符串
- 4. 解释流程
- 5. 编译和运行
- 6. 输出结果
在C语言中,处理JSON数据通常使用第三方库,如 cJSON 或 jansson。下面以 cJSON 为例,演示如何调用JSON解析函数的流程
1.安装 cJSON 库
首先,确保你的环境中安装了 cJSON
库。可以从 cJSON GitHub 页面 下载源代码,或使用包管理器安装(例如在Linux系统中使用apt-get
)。
如果使用 cJSON
的源代码:
git clone https://github.com/DaveGamble/cJSON.git
cd cJSON
make
sudo make install
2. 包含头文件
在你的 C 代码中包含 cJSON 的头文件。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cjson/cJSON.h>
3. 解析 JSON 字符串
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cjson/cJSON.h>
int main() {
// JSON 字符串
const char *json_string = "{\"name\": \"John\", \"age\": 30, \"city\": \"New York\"}";
// 解析 JSON 字符串
cJSON *json = cJSON_Parse(json_string);
if (json == NULL) {
printf("Error parsing JSON.\n");
return -1;
}
// 提取数据
cJSON *name = cJSON_GetObjectItem(json, "name");
cJSON *age = cJSON_GetObjectItem(json, "age");
cJSON *city = cJSON_GetObjectItem(json, "city");
if (name && age && city) {
printf("Name: %s\n", name->valuestring);
printf("Age: %d\n", age->valueint);
printf("City: %s\n", city->valuestring);
} else {
printf("Error: Missing expected key.\n");
}
// 释放 JSON 对象
cJSON_Delete(json);
return 0;
}
4. 解释流程
- 创建 JSON 字符串:你定义了一个 JSON 格式的字符串,例如:
"{\"name\": \"John\", \"age\": 30, \"city\": \"New York\"}"
。 - 解析 JSON:调用
cJSON_Parse()
函数解析 JSON 字符串,并返回一个指向cJSON
结构体的指针。如果解析失败,返回NULL
。 - 提取 JSON 对象的值:
- 使用
cJSON_GetObjectItem()
函数从解析后的 JSON 对象中获取特定键的值。 - 对于字符串值,使用
->valuestring
来访问值;对于整型值,使用->valueint
。
- 使用
- 释放内存:解析完毕后,调用
cJSON_Delete()
来释放 JSON 对象占用的内存。
5. 编译和运行
如果你将上面的代码保存为 json_example.c
,并且你的系统已经安装了 cJSON
,可以使用以下命令来编译和运行:
gcc json_example.c -o json_example -lcjson
./json_example
6. 输出结果
如果输入的 JSON 格式正确,程序会输出:
Name: John
Age: 30
City: New York