当前位置:   article > 正文

cJSON的学习和使用

cjson

一:什么是cJSON?

        cJSON是一个用C语言编写的JSON数据解析器,它轻便,可移植,是一个简单易用的解析器。它cJson的源码文件只有两个:一个C 文件(cJSON.c)和一个头文件(cJSON.h)。cJSON是用来处理json格式数据的一个库。cjson是使用c语言编写的,它十分轻量级,可用在内存有限的嵌入式设备中,来处理与互联网的交互数据。它实现了对json数据的基本操作,如:生成json数据,解析json数据,对json的增删改读等。

二:cJSON的特点

1.JSON指的是JavaScript对象表示法(JavaScript Object Notation)
2.JSON是轻量级的文本数据交换格式
3.JSON独立于语言
4.JSON具有自我描述性,更易理解
5.JSON 使用 JavaScript 语法来描述数据对象,但是 JSON仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。

语法规则可以简单总结为:1.数据在名称/值对中  2.数据由逗号分隔  3.花括号{}保存对象  4.方括号[ ]保存数组

cJSON示例:

JSON 名称/值对示例:

  1. JSON 数据的书写格式是:
  2. key : value
  3. 例如:
  4. "name" : "kangkang"

JSON 对象示例:

  1. {key1 : value1, key2 : value2, ... keyN : valueN }
  2. 例如:
  3. { "name":"mayday" , "Domain_name":"www.mayday.com" }

 JSON 数组示例:

  1. {
  2. "name":"网站",
  3. "num":3,
  4. "sites":[ "Google", "Runoob", "Taobao" ]
  5. }

三:cJSON库下载

git clone https://github.com/DaveGamble/cJSON.git

下载后即可看到相应的.c和.h文件

 使用时只需要.c和.h文件放入其中就可以使用了。

四:cJSON的学习

cJSON结构体

  1. typedef struct cJSON
  2. {
  3. struct cJSON*next,*prev; /* 遍历数组或对象链的前向或后向链表指针*/
  4. struct cJSON *child; /*数组或对象的孩子节点*/
  5. int type; /* key的类型*/
  6. char *valuestring; /*字符串值*/
  7. int valueint; /* 整数值*/
  8. double valuedouble; /* 浮点数值*/
  9. char *string; /* key的名字*/
  10. } cJSON;

 cJSON常用函数:

  1. cJSON *cJSON_CreateObject();
  2. //创建一个json对象,返回一个cJSON结构体类型的指针。
  3. cJSON *cJSON_CreateArray();
  4. //创建一个数组对象,返回一个cJSON结构体类型的指针。
  5. cJSON *cJSON_CreateString(const char *string);
  6. //创建一个字符串对象,传入一个char *类型的字符串,返回一个cJSON结构体类型的指针。
  7. void cJSON_AddItemToArray(cJSON *array, cJSON *item);
  8. //向数组对象中添加一个元素,传入参数array为cJSON *结构体类型的指针,为数组对象,item为添加如数字对象中的对象指针。
  9. void cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item);
  10. //向json对象中添加一对元素,object为json对象,string为加入一对元素中的name,item为加入一对元素中的value。
  11. char *cJSON_Print(cJSON *item);
  12. //将一个cJSON结构体代表的json对象转换为一个json格式的字符串。
  13. void cJSON_Delete(cJSON *c)
  14. //释放一个cJSON对象占用的内存空间。
  15. int cJSON_GetArraySize(cJSON array);
  16. //获取数组长度
  17. cJSON *cJSON_GetArrayItem(cJSON *array,int item);
  18. //用来获取数组指定的下标对象

五:测试示例

  1. #include <stdio.h>
  2. #include "cJSON.h"
  3. int main()
  4. {
  5. cJSON *root = cJSON_CreateObject();
  6. cJSON *item = cJSON_CreateObject();
  7. cJSON_AddItemToObject(root, "MQTT",cJSON_CreateString("aliyun"));
  8. cJSON_AddItemToObject(root, "id",cJSON_CreateString("192.168.0.7"));
  9. cJSON_AddItemToObject(root, "params",cJSON_CreateString("jiayou"));
  10. cJSON_AddItemToObject(root, "temperature",cJSON_CreateString("26"));
  11. cJSON_AddItemToObject(root, "Version",cJSON_CreateString("2.0.1"));
  12. char *msg = cJSON_Print(root);
  13. printf("%s\n",msg);
  14. cJSON_Delete(root);
  15. return 0;
  16. }

 

参考链接:JSON 教程 | 菜鸟教程 (runoob.com)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/908472
推荐阅读
相关标签
  

闽ICP备14008679号