json概念及jsoncpp编程接口说明

json概念及jsoncpp编程接口说明

ID:8814925

大小:92.00 KB

页数:7页

时间:2018-04-08

json概念及jsoncpp编程接口说明_第1页
json概念及jsoncpp编程接口说明_第2页
json概念及jsoncpp编程接口说明_第3页
json概念及jsoncpp编程接口说明_第4页
json概念及jsoncpp编程接口说明_第5页
资源描述:

《json概念及jsoncpp编程接口说明》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、JSON简介JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLanguage,StandardECMA-2623rdEdition-December1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C++,C#,Java,JavaScript,Perl,Python等)。这些特性使JSON成为理想的数据交换语言。JSON建构于两种结构:·对象,即“名称/值”对的集合(A

2、collectionofname/valuepairs)。一个对象可以包含多个“名称/值”对,可以理解为对象的属性。·数组,值的有序列表(Anorderedlistofvalues)。其中,“名称”是一个字符串,而“值”可以是多种数据类型,包括:字符串、数字、布尔值、null值、对象、数组。由此可见,JSON中数组和对象之间是可以相互嵌套的。一个JSON文档被解释为一个“值”,这个值的类型可以是上面列出的任何类型。这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。J

3、SON具有以下这些形式:对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔。数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、null、对象(object)或者数组(array)。这些结构可以嵌套。字符串(string)是由双引号包围的任意数量Unicod

4、e字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(characterstring)。字符串(string)与C或者Java的字符串非常相似。数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。空白可以加入到任何符号之间,但将被解析器过滤掉,不会出现在最终的解析结果中。Jsoncpp编程接口Jsoncpp是一个使用C++语言实现的面向对象的json库,以静态库的形式提供,使用非常简单。Jsoncpp提供的接口中有3个核心类:Reader、Writer、Value。Re

5、ader类负责从字符串或者输入流中加载JSON文档,并进行解析,生成代表JSON文档的Value对象。Writer类负责将内存中的Value对象转换成JSON文档,输出到文件或者是字符串中。Value类的对象代表一个JSON值,既可以代表一个文档,也可以代表文档中一个值。如同JSON中定义的“值”一样,Value是递归的。解析JSON文档解析一个JSON文档的大致过程如下://生命顶级Value对象Json::Valueroot;//读取文档:Std::stringstrdoc=readFromFile(…);//声明Reader对象Json::Re

6、ader_reader;//解析json文档_reader.paser(strdoc,root);//从root中提取数据,基本模式如下函数所示,其中PARAMout只是抽象的占位符,代表用来保存从Value中提取的数据的对象,并不是一个实际实现的类。GetValueFromTree(PARAMout,Json::Value&value){switch(value.type()){caseJson::nullValue:out.outvalue("null");break;caseJson::intValue:out.outvalue(value.a

7、sInt());break;caseJson::uintValue:out.outvalue(value.asUInt());break;caseJson::realValue:out.outvalue(value.asDouble());break;caseJson::stringValue:out.outvalue(value.asString().c_str());break;caseJson::booleanValue:break;out.outvalue(value.asBool());break;caseJson::arrayValue:

8、{intsize=value.size();//数组类型,使用数字下标作为索引遍历所有元素for(intin

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。