cJSON库使用手册:数据解析与处理指南
创作时间:
作者:
@小白创作中心
cJSON库使用手册:数据解析与处理指南
引用
1
来源
1.
https://shuyeidc.com/wp/48060.html
cJSON是一个开源的、用C语言编写的JSON解析库,支持JSON文件的解析和生成。以下是cJSON库的详细使用手册,包括安装、常用函数及示例代码,并附有相关问题与解答。
一、下载和安装
- 下载:从GitHub页面下载最新版本的 cJSON。
- 解压:解压缩下载的文件,将
cJSON.c
和
cJSON.h
文件包含到你的项目中。 - 编译:在 Linux 下使用命令
gcc test.c cJSON.c -o test -lm
进行编译,确保链接数学库(-lm)。
二、cJSON语法
键值对:
key:value
,如
"name":"Jack"
JSON对象:花括号括起来,包含多个键值对,如
{"width":1920,"height":1080}
JSON数组:方括号括起来,包含多个值,如
["Sunday","Monday","Tuesday"]
值的类型:数字(整数或浮点数)、字符串、布尔值(true/false)、数组、对象、null
三、cJSON结构体
typedef struct cJSON {
struct cJSON *next; // 指向下一个节点的指针
struct cJSON *prev; // 指向前一个节点的指针
struct cJSON *child; // 子节点指针
int type; // 类型
char *valuestring; // 字符串值
int valueint; // 整数值
double valuedouble; // 双精度浮点值
char *string; // 键名
} cJSON;
四、创建和操作cJSON的常用函数
- 创建JSON对象和数组
cJSON *cJSON_CreateObject(void);
cJSON *cJSON_CreateArray(void);
- 添加元素到JSON对象和数组
void cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item);
void cJSON_AddItemToArray(cJSON *array, cJSON *item);
- 创建基本类型的JSON项
cJSON *cJSON_CreateString(const char *string);
cJSON *cJSON_CreateNumber(double num);
cJSON *cJSON_CreateBool(int b);
cJSON *cJSON_CreateNull(void);
cJSON *cJSON_CreateTrue(void);
cJSON *cJSON_CreateFalse(void);
- 解析和打印JSON字符串
cJSON *cJSON_Parse(const char *value);
char *cJSON_Print(const cJSON *item);
void cJSON_Delete(cJSON *c); // 释放内存
五、示例代码
- 创建一个JSON对象并添加元素
#include "cJSON.h"
#include <stdio.h>
int main() {
cJSON *root = cJSON_CreateObject();
cJSON *name = cJSON_CreateString("Jack");
cJSON *age = cJSON_CreateNumber(30);
cJSON_AddItemToObject(root, "name", name);
cJSON_AddItemToObject(root, "age", age);
printf("%s
", cJSON_Print(root));
cJSON_Delete(root);
return 0;
}
- 解析JSON字符串
#include "cJSON.h"
#include <stdio.h>
int main() {
const char *json_string = "{\"name\":\"Jack\",\"age\":30}";
cJSON *root = cJSON_Parse(json_string);
if (root == NULL) {
printf("Error before: [%s]
", cJSON_GetErrorPtr());
} else {
printf("%s
", cJSON_Print(root));
cJSON_Delete(root);
}
return 0;
}
六、相关问题与解答
- cJSON_PrintUnformatted()和cJSON_Print()的区别?
答:
相同点:两者功能都是将 JSON 对象转换成字符串。
不同点:转换格式不同。
cJSON_Print()
格式化输出,带有缩进和换行;
cJSON_PrintUnformatted()
非格式化输出,不包含额外的空格和换行符。 - 如何解析含有复杂嵌套结构的JSON?
答:
可以通过递归调用
cJSON_GetObjectItem
和
cJSON_GetArrayItem
获取嵌套的对象和数组。
#include "cJSON.h"
#include <stdio.h>
int main() {
const char *json_string = "{\"name\":\"Jack\",\"details\":{\"age\":30,\"city\":\"New York\"}}";
cJSON *root = cJSON_Parse(json_string);
cJSON *details = cJSON_GetObjectItem(root, "details");
cJSON *age = cJSON_GetObjectItem(details, "age");
printf("Age: %s
", cJSON_Print(age));
cJSON_Delete(root);
return 0;
}
本文介绍了cJSON库的使用方法,希望对你有所帮助。如果有任何问题,欢迎留言交流。
热门推荐
美国成为追赶者,中国定义第六代战斗机标准,最核心指标是什么?
“二月上坟早,子孙不到老”,今年清明在三月,哪天上坟比较好?
乘法的定义和运算法则
国考报名指南:岗位选择与报名流程解析
混凝土材料与混凝土质量关系的分析
六大行官宣!存款利率降至历史最低,跨省市存款的“特种兵”也玩不动了
十二星座排列表:了解你的星座特质,探寻性格奥秘
生产项目管理书籍推荐
吃什么都拉肚子?原因及应对方法全解析
酸笋的腌制方法文字介绍
椰子水的功效与作用有哪些? 天然解渴神器还能补充电解质
椰子水的功效与作用:天然解渴神器还能补充电解质
美债收益率倒挂的历史启示:从1980年代到今天
什么是氮化镓(GaN)?它有哪些优势和用途?
室性心动过速:症状、病因、风险因素及预防措施
实用显卡选购指南:避开二手市场矿卡陷阱的技巧与推荐
乐器鸡翅木梨花木:传统乐器行业的珍贵之材
团队如何业绩目标规划
金仕康左旋肉碱加铬胶囊的副作用
杜甫:伟大的诗人背后的传奇
智慧公厕:城市公共厕所管理的智能化革新
A股基本技术之——逻辑分析
夏日除湿大作战:揭秘体内湿气与11味中药祛湿秘籍
钉钉总裁吐槽百度:搜索结果前十条都是广告
《似锦》拓宽古装情感题材表达空间
百度高管女儿"开盒"事件引发的三个问题!
花䱻鱼(土凤鱼)的特性及养殖价值
北京春日踏青的好去处:公园赏花、湖畔漫步、登山远眺
晚上吃苹果等于吃毒药?提醒:这几类水果才不能碰
走进苏州园林(江苏)