cJSON库使用教程

CSJON库基本数据格式 cJSON 定义

  1. typedef struct cJSON {
  2. struct cJSON *next,*prev;   // 数组 对象数据中用到
  3. struct cJSON *child;        // 数组 和对象中指向子数组对象或值
  4. int type;           // 元素的类型,如是对象还是数组
  5. char *valuestring;          // 如果是字符串
  6. int valueint;               // 如果是数值
  7. double valuedouble;         // 如果类型是cJSON_Number
  8. char *string;               // The item‘s name string, if this item is the child of, or is in the list of subitems of an object.
  9. } cJSON;

构造JSON:

首先创建JSON主对象

	cJSON* root=cJSON_CreateObject();

类似的创建数组对象

cJSON* array=cJSON_CreateArray();

向对象中增加(字符)节点

cJSON_AddStringToObject(root,"名称","字符串");

向对象中增加对象(字符串、数组、数字)

  cJSON_AddItemToObject(root,"名称",cJSON_CreateString("邝东宇")) ;
  cJSON_AddItemToObject(root,"名称",cJSON_CreateNumber(100))  ;

向数组中增加元素(元素类型不一定相同)

<span style="white-space:pre">	</span>cJSON_AddItemToArray(array,cJSON_CreateString("Linux"));
	cJSON_AddItemToArray(array,cJSON_CreateNumber(26));

解析JSON:

首先获取字符串形式的JSON数据,例:存储于char data[1024];

获取JSON对象

cJSON* root=cJSON_Parse(data);

获取指定名称的节点指针,

	cJSON* tmp=cJSON_GetObjectItem(root,"name");

解析数组,首先按上步获取数组指针 如 cJSON* array

获取数组大小 int size=cJSON_GetArraySize(array)
	获取数组元素 cJSON* tmp=cJSON_GetArrayItem(array,1);	//下标从0开始</span>

最后释放对象

 cJSON_Delete(root);

根据对象指针获取JSON字符串形式数据

char *data=cJSON_Print(root);

附件cJSON库以及demo源码在本人CSDN资源中获取。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-27 15:44:53

cJSON库使用教程的相关文章

cJSON 库的使用和优化

部门的产品使用自己公司研发的系统,嵌入式web服务器移植的是goahead2.5的,服务器和前端使用JSON交互,移植的cJSON库,所以这段时间对JSON的使用做个简单的笔记,cJSON.h提供出来的接口很多,但是感觉平时使用的也就那么几个. 在做测试的时候,通过创建json对象,添加节点,然后保存,读取,输出这样的一个流程,发现当添加节点数多的时候,会会出现长时间的等待,当时好像是一万行的数据量,整个创建过程花费了2,3秒钟,所以当更多数据量的时候,花费的时间可能更长.最后发现是这个函数导致

[学习笔记] Python标准库简明教程 [转]

1 操作系统接口 os 模块提供了一系列与系统交互的模块: >>> os.getcwd() # Return the current working directory '/home/minix/Documents/Note/Programming/python/lib1' >>> os.chdir('~/python') # Change current working directory Traceback (most recent call last): File

Numpy库进阶教程(二)

第一篇在这里:Numpy库进阶教程(一)求解线性方程组 求解特征值和特征向量 关于特征值和特征向量的介绍,可以点击这里 首先创建一个矩阵 In [1]: A=mat("3 -2;1 0") In [2]: A Out[2]: matrix([[ 3, -2], [ 1, 0]]) 在numpy.linalg模块中,eigvals函数可以计算矩阵的特征值,而eig函数可以返回一个包含特征值和对应特征向量的元组. 使用eigvals函数求解特征值 In [3]: linalg.eigval

【源码分析】cJSON库学习

cJSON库是什么? cJSON是一个轻量级的json解析库.使用起来非常简单,整个库非常地简洁,核心功能的实现都在cJSON.c文件,非常适合阅读源代码来学习C语言.最近读完这个库的源码,分享自己收获的一些心得. 什么是json,照搬json官网的说法: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Language, Standard ECMA-

Altium Designer 6三维元件库建模教程

一.AD6.9 PCB编辑环境下如何使用STEP模型的方法. 在PCB 封装库中添加对应的3D模型,然后选择update pcb 即可 方法:在PCB library 页面,点击place -- 3d body ,选择属性步骤模型,点击插入步骤模型,双击对应模型DIP40,放置之后,按数字键3切换到3维, 拖动3D模型到合适位置即可(或双击模型调整其角度),然后右击左边元件封装列表的紧锁座40--update PCB with 紧锁座40--确定.这时点击数字键2能看到其3D投影, 或切换到PC

Python 机器学习库 NumPy 教程

0 Numpy简单介绍 Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy.matplotlib一起使用.其实,list已经提供了类似于矩阵的表示形式,不过numpy为我们提供了更多的函数.如果接触过matlab.scilab,那么numpy很好入手. 1 安装 pip install numpy 在NumPy中,维度称之为axis(复数是axes),维度的数量称之为rank. (通用做法import numpu as np 简单输入) 2 多维数组 NumPy

python的库requests教程

requests是python的第三方库,号称:Requests: HTTP for Humans中文快速教程在这:http://cn.python-requests.org/zh_CN/latest/看完之后有点迷惑,不知道怎么用,看了一下源码,发现 #官冈文档中第一条就是 >>> r = requests.get('https://github.com/timeline.json') >>> r = requests.put("http://httpbin

Android Studio导入第三方库(SlidingMenu)教程

搞了半天,android的初学者,看着网上各种例子,特此记录. 注意:本教程针对像SlidingMenu这样使用Android Studio结构的第三方库. 开始: 第一步,去GitHub下载SlidingMenu (下载地址:https://github.com/jfeinstein10/SlidingMenu),下载下来在你的电脑上应该是这样样子的: 第二步,建立一个Android Studio项目: 第三步,在咱们的SlidingMenudemo项目里建立个model,这样就避免了好多教程

iOS开发Facebook POP动效库使用教程

如果说Origami这款动效原型工具是Facebook Paper的幕后功臣,那么POP便是Origami的地基.感谢Facebook开源了POP动效库,让人人都能制作出华丽的动效.我们只需5步,便能搞定酷炫的动效. 步骤1: 安装 使用CocoaPods安装POP,只需要在Podfile中加入这么一行: pod 'pop', '~> 1.0' 或者如果想要手动添加,那么参考POP Github中的描述: 除此之外,你还可以将工程添加到工作区里面,然后采用提供的配制文件.或者手动复制POP子目录