资源描述:
《【个人总结系列-24】json学习总结及cjson代码分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、JSON学子总结及CJson代码分析“JSON”的全称是“JavaScriptObjectNotation”,即JavaScript对象符号,是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。JSON采用与编程语言无关的文本格式,但是也使用了类C语言(包括C、C++、C#、Java、JavaScript、Python等)的习惯,这些特性使JSON成为理想的数据交换格式。JSON建构于两种结构:(1)“名称/值”对的集合。不同的语言中,其被理解为对象(“object”)、纪录(“record”)、结构(“struct”)、字
2、典(“dictionary”)、哈希表(“hashtable”)、有键列表(“keyedlist”)或者关联数组(“associativearray”)。(2)值的有序列表。在大部分语言中,其被理解为数组(“array”)。简单理解,JSON的定义由以下四句话就全部定义了。l并列的数据之间用逗号(”,”)分隔。l映射用冒号(”:”)表示。l并列数据的集合(数组)用方括号("[]")表示。l映射的集合(对象)用大括号(”{}”)表示。对JSON的解析主要学习了通过一个简短的开源的C语言代码cJson对JSON格式数据进行解析。cJson的代码很
3、简短,全部只有20KB左右,主要包含了解析、构造、编辑JSON数据,这些功能主要通过其自定义的cJSON数据结构。cJSON数据结构对JSON格式数据进行了描述,并通过程序提供了许多操作,cJSON数据结构定义如下所示:/*ThecJSONstructure:*/typedefstructcJSON{structcJSON*next,*prev;/*如果该Json结构在数组中,则它的前后节点*/structcJSON*child;/*如果存在子对象,其第一个子对象*/inttype;/*Json对象的类型*/char*valuestring;
4、/*Theitem'sstring,iftype==cJSON_String*/intvalueint;/*Theitem'snumber,iftype==cJSON_Number*/doublevaluedouble;/*Theitem'snumber,iftype==cJSON_Number*/char*string;/*Json对象的名字*/}cJSON;Json对象的类型/*cJSONTypes:*/#definecJSON_False0#definecJSON_True1#definecJSON_NULL2#definecJSON_
5、Number3otherstaffoftheCentre.Duringthewar,ZhuwastransferredbacktoJiangxi,andDirectorofthenewOfficeinJingdezhen,JiangxiCommitteeSecretary.Startingin1939servedasrecorderoftheWestNorthOrganization,SecretaryoftheSpecialCommitteeAfterthevictoryofthelongMarch,hehasbeentheNorthwes
6、tOfficeoftheFederationofStateenterprisesMinister,ShenmufuguSARmissions,DirectorofNingxiaCountypartyCommitteeSecretaryandrecorderoftheCountypartyCommitteeSecretary,Ministersand#definecJSON_String4#definecJSON_Array5#definecJSON_Object6以下通过下面的JSON格式数据为例分析cJson中的基本函数,数据在C语言中表示
7、如下:char*value="[{"name":"鸟巢","point":{"lat":"39.990","lng":"116.397"},"desc":"奥运会主场地"},{"name":"北大乒乓球馆","point":{"lat":"39.988","lng":"116.315"},"desc":"乒乓球比赛场地"},{"name":"北京工人体育场","point":{"lat":"39.930","lng":"116.446"},"
8、desc":"足球比赛场地"}]"cJson中的基本函数主要总结如下:函数功能解析函数函数定义externcJSON*cJSON_Parse(constcha