cJSON
NB_vol_1
这个作者很懒,什么都没留下…
展开
-
cJSON代码阅读(1)——JSON介绍
最近看hevc视频编码看得头昏眼花,先休息一下。先看看一个开源的json解析器的代码。以下摘自百度百科JSON 介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率原创 2016-01-04 11:20:53 · 1171 阅读 · 0 评论 -
cJSON代码阅读(8)——解析JSON对象
parse_object是进行json对象解析的函数。1、首先判断待处理数据是不是对象(以左大括号开始)2、跳过数组的左大括号,跳过空白字符3、如果紧接着的是右大括号,那么表示对象是空的,返回4、使用parse_string处理对象中第一个属性(也可以叫键值对,我比较喜欢把对象里的键值对叫做属性)的名字,判断紧接着的是不是一个冒号,如果不是,那么表示属性只有名字而没有值,错误。如果原创 2016-01-04 16:18:55 · 1298 阅读 · 0 评论 -
cJSON代码阅读(9)——构造json数据的流程
cJSON_Print是构造json数据的主要函数,它内部调用print_value对你的数据进行格式化print_value的主要流程:1、首先判断节点的类型2、如果是null、布尔类型,那么直接转换为字符串之后返回3、否则,调用print_number对数值进行格式化,调用print_string对字符串进行格式化,,调用print_array对数组进行格式化,调用print_原创 2016-01-04 17:19:22 · 1098 阅读 · 0 评论 -
cJSON代码阅读(7)——解析JSON数组
parse_array是进行json数组解析的函数。1、首先判断待处理数据是不是数组2、跳过数组的左中括号3、跳过那些无用的空白字符4、如果紧接着的是右中括号,那么表示数组是空的,直接返回5、如果数组不空,那么调用parse_value解析数组的第一个元素,如果解析没有出错,而且紧接着的是逗号,那么表示数组还有其他元素,进入一个循环,依次解析每一个元素6、跳过空白字符之后,原创 2016-01-04 16:08:22 · 1930 阅读 · 0 评论 -
cJSON代码阅读(6)——解析JSON数值
parse_number是进行json数值解析的函数。1、首先判断数值是否有负号2、跳过数值开头的03、计算数值的整数部分——从字符串转换为数字4、计算数值的小数部分——从字符串转换为数字5、返回下一个json数据的位置/* Parse the input text to generate a number, and populate the result into ite原创 2016-01-04 15:44:00 · 1298 阅读 · 0 评论 -
cJSON代码阅读(5)——解析JSON字符串
parse_string是进行json字符串解析的函数。1、首先判断待处理的json数据是不是字符串2、计算字符串的长度3、分配内存4、遍历json当中的字符串中的每一个字符,如果是普通字符,就直接保存,如果是转义字符需要进行特殊处理(具体见代码)5、返回下一个json数据的位置// 解析字符串static const char *parse_string(cJSON *原创 2016-01-04 15:34:33 · 1655 阅读 · 0 评论 -
cJSON代码阅读(4)——解析JSON数据的流程
解析JSON数据的主函数是cJSON_Parse,这个函数默认调用不带选项的cJSON_ParseWithOpts函数。cJSON_ParseWithOpts函数首先创建一个JSON节点,然后跳过空白字符,接着调用parse_value函数进行数据的解析,然后判断解析是否出错,如果出错,那么释放内存,然后返回空指针,全局变量ep(char*类型)记录了出错的位置。如果没有出错,那么返回树形结构原创 2016-01-04 15:21:33 · 3842 阅读 · 0 评论 -
cJSON代码阅读(3)——cJSON的数据结构
cJSON中主要的数据结构是cJSON结构体:/* The cJSON structure: */// cJSON对象typedef struct cJSON { // 下一个、上一个json对象 struct cJSON *next,*prev; /* next/prev allow you to walk array/object chains. Alternatively,原创 2016-01-04 14:50:26 · 1210 阅读 · 0 评论 -
cJSON代码阅读(2)——cJSON介绍
cJSON是一个轻巧,携带方便,单文件,简单的并且符合ANSI-C标准的JSON解析器。下面看看使用它的两个例子(这两个例子也是来源于网上)。解析json数据:#include #include #include #include using namespace std;#include "cJSON.h"void parse_json_data(){ char原创 2016-01-04 11:33:05 · 1005 阅读 · 0 评论 -
cJSON代码阅读(10)——把数值构造成JSON格式
print_number是对数值进行格式化的主要函数1、首先判断数值是否为0,如果是0,那么直接把0转换成字符串"0",然后返回2、如果数值可以使用整数表达,那么对这个数值进行整形的格式化3、对于其他的数值(即不是0,也不能用整形表示的其他浮点数),进行浮点型的格式化/* Render the number nicely from the given item into a s原创 2016-01-04 17:30:30 · 1562 阅读 · 0 评论