VC下jsoncpp的使用入门.docx

上传人:scccc 文档编号:14041513 上传时间:2022-01-31 格式:DOCX 页数:4 大小:47.79KB
返回 下载 相关 举报
VC下jsoncpp的使用入门.docx_第1页
第1页 / 共4页
VC下jsoncpp的使用入门.docx_第2页
第2页 / 共4页
VC下jsoncpp的使用入门.docx_第3页
第3页 / 共4页
VC下jsoncpp的使用入门.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《VC下jsoncpp的使用入门.docx》由会员分享,可在线阅读,更多相关《VC下jsoncpp的使用入门.docx(4页珍藏版)》请在三一文库上搜索。

1、VC 下 jsoncpp 的使用入门一、摘要JSON 的全称为: JavaScript Object Notation ,顾名思义, JSON 是用于标记Javascript 对象的, JSON 官方的解释为: JSON 是一种轻量级的数据传输格式。本文并不详细介绍 JSON 本身的细节,旨在讨论如何使用 C+ 语言来处理JSON 。关于JSON 更具体的信息,可参见JSON 官网: http:/www.json.org 。二、 jsoncpp 在 Windows 下的编译要使用第三方源码库, 第一步少不了的就是编译, 将源码文件编译成我们方便使用的动态链接库、静态链接库或者静态导入库1 。j

2、sconcpp 进行 JSON 解析的源码文件分布在 include/json 、 src/lib_json 下。 其实 jsoncpp 源 码并不多, 为了方便产品管理, 此处没必要将其编译为动态链接库或者静态导入库, 所以我 们选择使用静态链接库2 。jsoncpp 已经处理的很完善了,所有编译选项都已经配置好,打开makefiles/vs71/jsoncpp.sln便可以开始编译(默认是使用 VS2003 编译器的,打开时直接按照 VS2005 提示转换即 可) 。三、静态链接库的使用VC 中使用静态库的方法#pragma comment(lib, “ xxx.lib ”)但在编译你应用

3、程序时可能出现类似如下的错误1libcmtd.lib(invarg.obj):error LNK2005: _invoke_watson已经在MSVCRTD.lib(MSVCR90D.dll)中定义1libcmtd.lib(dbgheap.obj) : error LNK2005: _CrtSetCheckCount已经在MSVCRTD.lib(MSVCR90D.dll)中定义1libcmtd.lib(tidtable.obj) : error LNK2005: _encode_pointer已经在MSVCRTD.lib(MSVCR90D.dll)中定义1libcmtd.lib(tidtabl

4、e.obj) : error LNK2005: _decode_pointer已经在MSVCRTD.lib(MSVCR90D.dll)中定义解决办法是在编译jsoncpp 的 lib 时,选择动态运行时库瀛同刷牛田充引目 配置回生鹏制iSU工 C/C+常规优化 击灯理醇确定 1 | 二相二周3lxb_jEon JKtiZJt? j|X肥苴城 向0*平=8:活劫M元幻* I归昔理用3访编语斗 输出文件 浏究信息 亩以 命争j I君理员 M1HL交档生成周 6儡信七 生成苧件 目定乂生出步聚 +代码析具体含义如下开关对应的库版本/MDMSVCPRT.LIB多线程DLL的Release版本/MDdM

5、SVCPRTD.LIB多线程DLL的Debug版本/MTL旧CPMT.L旧多线程静态链接的Release版本/MTdLIBCPMTD.L旧多线程静态链接的Debug版本四、jsoncpp使用详解jsoncpp主要包含三种类型的class: Value、Reader、Writer。jsoncpp中所有对象、类名者B在 namespace Json 中,包含 json.h 即可。Json:Value只能处理 ANSI类型的字符串,如果 C+程序是用 Unicode编码的,最好加 一个Adapt类来适配。1、ValueJson:Value是jsoncpp中最基本、最重要的类,用于表示各种类型的对象,

6、jsoncpp支持的对象类型可见 Json:ValueType枚举值。可如下是用 Json:Value类:Json:Value json_temp; /临时对象,供如下代码使用 json_tempname = Json:Value( huchao );json_tempage = Json:Value(26);Json:Value root; / 表示整个 json 对象rootkey_string = Json:V alue( value_string );/ 新建一个 Key(名为:key_string),/赋予字符串值 :” value_string ” rootkey_number =

7、 Json:Value(12345);/新建一个 Key(名为:key_number),/赋予数值 :12345。rootkey_boolean = Json:Value(false); / 新建一个 Key(名为:key_boolean), /赋予 bool 值 :false。rootkey_double = Json:Value(12.345);/新建一个 Key(名为:key_double),/赋予double 值 :12.345rootkey_object = Json_temp; / 新建一个 Key( 名为 :key_object) , /赋予 json:Value 对象值。roo

8、tkey_array.append( “ array_string ” );/ 新建一个 Key( 名为 :key_array),/类型为数组 ,对第一个元素赋值为字符串 :” array_stringrootkey_array.append(1234); / 为数组 key_array 赋值 ,对第二个元素赋值为 :1234。Json:ValueType type = root.type();/ 获得 root 的类型,此处为 objectValue 类型。注:跟 C+ 不同, JavaScript 数组可以为任意类型的值,所以 jsoncpp 也可以。如上几个用法已经可以满足绝大部分jso

9、n 应用了, 当然 jsoncpp 还有一些其他同能,比如说设置注释、比较json 大小、交换json 对象等,都很容易使用,大家自己尝试吧。2、 Writer如上说了Json:Value 的使用方式,现在到了该查看刚才赋值内容的时候了,查看json 内容,使用Writer 类即可。Jsoncpp 的 Json:Writer 类是一个纯虚类,并不能直接使用。在此我们使用 Json:Writer 的子类:Json:FastWriter、 Json:StyledWriter 、 Json:StyledStreamWriter 。顾名思义,用 Json:FastWriter 来处理 json 应该是

10、最快的,下面我们来试试。Json:FastWriter fast_writer;std:cout fast_writer.write(root) std:endl; 输出结果为: “ key_array ” :array_string,1234,” key_boolean ” :false, ” key_double ” :12.3450, ” key_nu345, ” key_object ” : “ age ” :26, ” name” : ” huchao ” , ” key_string ” : ” value_string ”再次顾名思义, 用 Json:StyledWriter 是

11、格式化后的 json , 下面我们来看看Json:StyledWriter是怎样格式化的。Json:StyledWriter styled_writer;std:cout styled_writer.write(root) std:endl;输出结果为:“ key_array ” : array_string, 1234 ,“ key_boolean ” : false,“key_double ” : 12.3450,“ key_number” : 12345,“ key_object ” : “ age” : 26,“ name” : 大中华“ ”,“ key_string ” :“valu

12、e_string3、 ReaderJson:Reader 是用于读取的,说的确切点,是用于将字符串转换为 Json:Value 对象的,下 面我们来看个简单的例子。Json:Reader reader;Json:Value json_object;const char* json_document =” ag“ e” : 26”, name” :” huchao” ”;if (!reader.parse(json_document, json_object)return 0;std:cout json_objectname std:endl;std:cout json_objectage std:endl;输出结果为:“大中华 ”26可见,上述代码已经解析出了 json 字符串。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1