cJSON库介绍

cJSON简介:

JSON(JavaScriptObject Notation)是一种轻量级的数据交换格式。它基于JavaScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

cJSON一个超轻巧,携带方便,单文件,简单的可以作为ANSI-C标准的JSON解析器。

cJSON结构体:

typedefstruct cJSON {

structcJSON *next,*prev;

struct cJSON *child;

int type;

char * valuestring;

int valueint;

double valuedouble;

char *string;

}cJSON;

1cJSON存储的时候是采用链表存储的,其访问方式很像一颗树。每一个节点可以有兄妹节点,通过next/prev指针来查找,它类似双向链表;每个节点也可以有孩子节点,通过child指针来访问,进入下一层。

不过,只有节点是对象或数组才可以有孩子节点。

2type一共有7种取值,分别是:

#define cJSON_False 0

#define cJSON_True 1

#define cJSON_NULL 2

#define cJSON_Number 3

#define cJSON_String 4

#define cJSON_Array 5

#define cJSON_Object 6

若是Number类型,则valueintvaluedouble中存储着值,若你期望的是int,则访问valueint,若期望的是double,则访问valuedouble,可以得到值。

若是String类型的,则valuestring中存储着值,可以访问valuestring得到值。

3string中存放的是这个节点的名字。

用法:

1、只需在函数中includecJSON.h头文件,然后和cJSON.c或库文件libcJSON.a一起编译即可使用。

2、具体函数用法详见cJSON.h中注释。


### cjson介绍 cJSON是一个超轻巧,携带方便,单文件,简单的可以作为ANSI - C标准的JSON解析器。从引用的内容可知,它可用于构建JSON结构体,也能在STM32平台上进行JSON数据的解析,并应用于实际的硬件控制中,如控制STM32开发板上LED灯的亮灭状态[^4]。 ### cjson使用方法 #### 构建JSON结构体 以下是构建一个JSON对象的示例代码: ```c #include <stdio.h> #include "cJSON.h" int main() { cJSON *root, *fmt; char *out; // 创建一个JSON对象 root = cJSON_CreateObject(); // 向对象中添加字符串类型的键值对 cJSON_AddItemToObject(root, "name", cJSON_CreateString("Jack (\"Bee\") Nimble")); // 向对象中添加一个嵌套的JSON对象 cJSON_AddItemToObject(root, "format", fmt = cJSON_CreateObject()); // 向嵌套对象中添加字符串类型的键值对 cJSON_AddStringToObject(fmt, "type", "rect"); // 向嵌套对象中添加数值类型的键值对 cJSON_AddNumberToObject(fmt, "width", 1920); cJSON_AddNumberToObject(fmt, "height", 1080); // 向嵌套对象中添加布尔类型(false)的键值对 cJSON_AddFalseToObject (fmt, "interlace"); cJSON_AddNumberToObject(fmt, "frame rate", 24); // 将JSON对象转换为字符串 out = cJSON_Print(root); // 删除JSON对象,释放内存 cJSON_Delete(root); // 打印JSON字符串 printf("%s\n", out); // 释放转换后的字符串占用的内存 cJSON_free(out); return 0; } ``` 上述代码中,首先创建了一个根JSON对象,然后向其中添加了不同类型的键值对,包括字符串、数值、布尔值等,还添加了嵌套的JSON对象。最后将JSON对象转换为字符串并打印,完成后释放相应的内存[^1][^3]。 #### 解析JSON数据(以STM32为例) 在STM32平台上,cJSON可用于解析通过串口接收到的JSON格式数据。其主要步骤包括串口数据解析、键值分析,并根据解析得到的键值控制LED灯的亮灭状态。具体使用时,需下载并解压`stm32_cjson测试.zip`文件,使用STM32开发环境(如Keil、STM32CubeIDE等)打开项目文件,编译并下载程序到STM32F103C8T6开发板,通过串口发送JSON格式的数据,观察LED灯的变化。同时要确保开发板上的串口配置与程序中的配置一致,发送的JSON数据格式正确,避免解析错误[^4]。 ### 相关资源 - **下载**:文中未提及具体的下载地址,一般可以在开源代码托管平台(如GitHub)上搜索`cJSON`,找到官方或合适的版本进行下载。 - **学习资料**:可以参考文中提到的“cJSON学习笔记”,它会对cJSON的使用有更详细的介绍。同时,文中的“cjson构建_cJSON结构体构建”示例代码也能帮助理解其构建JSON结构体的方法。对于STM32平台使用cJSON的学习,可参考“STM32 CJSON测试资源文件介绍”,通过实际的测试项目学习如何在嵌入式系统中使用cJSON进行数据解析和硬件控制[^1][^2][^3][^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值