cJSON是轻量级C库,适用于Linux和嵌入式系统;2. 通过git克隆、make编译安装,头文件和库默认安装至/usr/local/include和/lib;3. 使用cJSON_Parse解析JSON字符串,cJSON_GetObjectItem获取键值,根据类型提取数据后需调用cJSON_Delete释放内存;4. 创建JSON对象用cJSON_CreateObject,添加键值对后用cJSON_Print生成字符串,最后释放内存;5. 支持数组与嵌套结构,如用cJSON_CreateArray创建数组并添加对象;6. 需注意内存管理以避免泄漏。

在Linux环境下处理JSON数据,cJSON是一个轻量级且广泛使用的C语言库。它不依赖其他库,代码简洁,适合嵌入式系统和常规Linux应用程序。本文介绍如何在Linux中使用cJSON解析和生成JSON数据。
安装与配置cJSON
cJSON没有复杂的依赖,可以直接集成到项目中。
make && sudo make install
默认会将头文件安装到 /usr/local/include,库文件到 /usr/local/lib。确保链接时加上 -lcjson。
解析JSON字符串
假设有一段JSON数据:
{"name": "Alice", "age": 25, "city": "Beijing"}
使用cJSON解析的步骤如下:
NetShop软件特点介绍: 1、使用ASP.Net(c#)2.0、多层结构开发 2、前台设计不采用任何.NET内置控件读取数据,完全标签化模板处理,加快读取速度3、安全的数据添加删除读取操作,利用存储过程模式彻底防制SQL注入式攻击4、前台架构DIV+CSS兼容IE6,IE7,FF等,有利于搜索引挚收录5、后台内置强大的功能,整合多家网店系统的功能,加以优化。6、支持三种类型的数据库:Acces
- 调用 cJSON_Parse 解析字符串,返回 cJSON 结构指针
- 用 cJSON_GetObjectItem 获取指定键的值
- 根据类型提取数据(如字符串用 valuestring,整数用 valueint)
- 使用完毕后调用 cJSON_Delete 释放内存
示例代码片段:
cJSON *root = cJSON_Parse(json_string);
if (root == NULL) { /* 解析失败 */ }
cJSON *name = cJSON_GetObjectItem(root, "name");
printf("Name: %s\n", name->valuestring);
cJSON_Delete(root);
创建和生成JSON
构造JSON对象也很直观:
- 调用 cJSON_CreateObject 创建根对象
- 使用 cJSON_AddStringToObject、cJSON_AddNumberToObject 添加键值对
- 调用 cJSON_Print 将对象转为格式化字符串
- 记得释放 cJSON_Delete 生成的对象
示例:
cJSON *root = cJSON_CreateObject();
cJSON_AddStringToObject(root, "name", "Bob");
cJSON_AddNumberToObject(root, "age", 30);
char *rendered = cJSON_Print(root);
printf("%s\n", rendered);
free(rendered);
cJSON_Delete(root);
处理数组和嵌套结构
cJSON也支持数组和复杂嵌套:
- 用 cJSON_CreateArray 创建数组
- 通过 cJSON_AddItemToArray 添加元素
- 可将对象加入数组,或在对象中嵌套数组
例如构建一个包含多个用户信息的数组:
cJSON *users = cJSON_CreateArray();
cJSON *user = cJSON_CreateObject();
cJSON_AddStringToObject(user, "name", "Charlie");
cJSON_AddNumberToObject(user, "id", 1);
cJSON_AddItemToArray(users, user);
char *out = cJSON_Print(users);
// 输出: [{"name": "Charlie", "id": 1}]
基本上就这些。cJSON简单直接,适合在C项目中快速处理JSON。只要注意内存管理,避免泄漏,就能稳定运行。









