云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 个人总结系列-24JSON学习总结及CJson代码分析

个人总结系列-24JSON学习总结及CJson代码分析

  • 62 次阅读
  • 3 次下载
  • 2025/5/2 20:10:41

JSON学子总结及CJson代码分析

“JSON”的全称是“JavaScript Object Notation”,即JavaScript对象符号,是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。JSON采用与编程语言无关的文本格式,但是也使用了类C语言(包括C、C++、C#、Java、JavaScript、Python等)的习惯,这些特性使JSON成为理想的数据交换格式。

JSON建构于两种结构: (1)“名称/值”对的集合。不同的语言中,其被理解为对象(“object”)、纪录(“record”)、结构(“struct”)、字典(“dictionary”)、哈希表(“hash table”)、有键列表(“keyed list”)或者关联数组(“associative array”)。 (2)值的有序列表。在大部分语言中,其被理解为数组(“array”)。

简单理解,JSON的定义由以下四句话就全部定义了。

? ? ? ?

并列的数据之间用逗号(”,”)分隔。 映射用冒号(”:”)表示。

并列数据的集合(数组)用方括号(\)表示。 映射的集合(对象)用大括号(”{}”)表示。

对JSON的解析

主要学习了通过一个简短的开源的C语言代码cJson对JSON格式数据进行解析。cJson的代码很简短,全部只有20KB左右,主要包含了解析、构造、编辑JSON数据,这些功能主要通过其自定义的cJSON数据结构。cJSON数据结构对JSON格式数据进行了描述,并通过程序提供了许多操作,cJSON数据结构定义如下所示:

/* The cJSON structure: */ typedef struct cJSON { struct cJSON *next,*prev; struct cJSON *child; int type; /* 如果该Json结构在数组中,则它的前后节点*/ /* 如果存在子对象,其第一个子对象*/ /* Json对象的类型*/ /* The item's string, if type==cJSON_String*/ /* The item's number, if type==cJSON_Number*/ /* The item's number, if type==cJSON_Number*/ char *valuestring; int valueint; double valuedouble; char *string; /* Json对象的名字*/ } cJSON; Json对象的类型

/* cJSON Types: */ #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 以下通过下面的JSON格式数据为例分析cJson中的基本函数,数据在C语言中表示如下:

char * value = \鸟巢\\\奥

\\\

\\\乒乓球比赛场地\\\北京工人体育场\\\足球比赛场地\\\

cJson中的基本函数主要总结如下: 函数功能 函数定义 解析函数 extern cJSON *cJSON_Parse(const char *value) 传入一个字符串,返回一个cJSON,可以通过if (!json)来判断解析是函数说明 否出错,如果出错,可以通过printf(\[%s]\\n\打印出错位置。

函数功能 函数定义 函数说明 打印cJSON extern char *cJSON_Print(cJSON *item) 传入一个cJSON,将会以排好版的格式打印JSON。 对上面的value进行解析并打印后,输出的效果如下所示: [{

\鸟巢\ \ { \ \ \ \ },

\奥运会主场地\ }, {

\北大乒乓球馆\ \ { \ \ \ \ },

\乒乓球比赛场地\ }, {

\北京工人体育场\ \ { \ \ \ \ },

\足球比赛场地\ }]

函数功能 函数定义 释放cJSON内存空间 extern void cJSON_Delete(cJSON *c) 获得了一个cJSON,当使用完了之后要删除,因为返回的cJSON是函数说明 通过malloc的方式分配的,如果用完不及时释放会造成内存泄露。

函数功能 函数定义 获取cJSON大小 extern int cJSON_GetArraySize(cJSON *array) 返回数组或对象中的大小,只要该对象下包括其他对象,各对象一般函数说明 以“,”分隔。

函数功能 函数定义 函数说明

函数功能 以名称的方式获取cJSON数组或对象相应的项 extern cJSON *cJSON_GetObjectItem(cJSON *object,const char 函数定义 *string) 函数说明

以index的方式获取cJSON数组或对象相应的项 extern cJSON *cJSON_GetArrayItem(cJSON *array,int item) 返回数组或对象中相应index的项,找不到会返回NULL。 获取当前cJSON对象下有名字的cJSON对象,找不到会返回NULL。

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

JSON学子总结及CJson代码分析 “JSON”的全称是“JavaScript Object Notation”,即JavaScript对象符号,是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。JSON采用与编程语言无关的文本格式,但是也使用了类C语言(包括C、C++、C#、Java、JavaScript、Python等)的习惯,这些特性使JSON成为理想的数据交换格式。 JSON建构于两种结构: (1)“名称/值”对的集合。不同的语言中,其被理解为对象(“object”)、纪录(“record”)、结构(“struct”)、字典(“dictionary”)、哈希表(“hash table”)、有键列表(“keyed list”)或者关联数组(“associative array”)。 (2)值的有序列表。在大部分语言中,其被

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com