欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    VC下jsoncpp的使用入门.doc

    • 资源ID:10737737       资源大小:75KB        全文页数:4页
    • 资源格式: DOC        下载积分:2
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要2
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    VC下jsoncpp的使用入门.doc

    VC下jsoncpp的使用入门一、摘要JSON 的全称为:JavaScript Object Notation,顾名思义,JSON 是用于标记 Javascript 对象的,JSON 官方的解释为:JSON 是一种轻量级的数据传输格式。本文并不详细介绍 JSON 本身的细节,旨在讨论如何使用 C+ 语言来处理 JSON。关于 JSON 更具体的信息,可参见 JSON 官网:http:/www.json.org。二、jsoncpp 在 Windows 下的编译要使用第三方源码库,第一步少不了的就是编译,将源码文件编译成我们方便使用的动态链接库、静态链接库或者静态导入库1。jsconcpp 进行 JSON 解析的源码文件分布在 include/json、src/lib_json 下。其实 jsoncpp 源码并不多,为了方便产品管理,此处没必要将其编译为动态链接库或者静态导入库,所以我们选择使用静态链接库2。jsoncpp 已经处理的很完善了,所有编译选项都已经配置好,打开makefiles/vs71/jsoncpp.sln 便可以开始编译(默认是使用 VS2003 编译器的,打开时直接按照 VS2005 提示转换即可)。三、静态链接库的使用VC中使用静态库的方法#pragma comment(lib, “xxx.lib”)但在编译你应用程序时可能出现类似如下的错误1>libcmtd.lib(invarg.obj):error LNK2005: _invoke_watson 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义1>libcmtd.lib(dbgheap.obj) : error LNK2005: _CrtSetCheckCount 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义1>libcmtd.lib(tidtable.obj) : error LNK2005: _encode_pointer 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义1>libcmtd.lib(tidtable.obj) : error LNK2005: _decode_pointer 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义解决办法是在编译jsoncpp的lib时,选择动态运行时库具体含义如下开关 对应的库 版本 /MDMSVCPRT.LIB多线程DLL的Release版本/MDdMSVCPRTD.LIB多线程DLL的Debug版本/MTLIBCPMT.LIB多线程静态链接的Release版本/MTdLIBCPMTD.LIB多线程静态链接的Debug版本四、jsoncpp 使用详解jsoncpp 主要包含三种类型的 class:Value、Reader、Writer。jsoncpp 中所有对象、类名都在 namespace Json 中,包含 json.h 即可。Json:Value 只能处理 ANSI 类型的字符串,如果 C+ 程序是用 Unicode 编码的,最好加一个 Adapt 类来适配。1、ValueJson:Value 是jsoncpp 中最基本、最重要的类,用于表示各种类型的对象,jsoncpp 支持的对象类型可见 Json:ValueType 枚举值。可如下是用 Json:Value 类:Json:Value json_temp; / 临时对象,供如下代码使用json_temp"name" = Json:Value(“huchao”);json_temp"age" = Json:Value(26);Json:Value root; / 表示整个 json 对象root"key_string" = Json:Value(“value_string”); / 新建一个 Key(名为:key_string),/赋予字符串值:”value_string”root"key_number" = Json:Value(12345); / 新建一个 Key(名为:key_number),/赋予数值:12345。root"key_boolean" = Json:Value(false); / 新建一个 Key(名为:key_boolean),/赋予bool值:false。root"key_double" = Json:Value(12.345); / 新建一个 Key(名为:key_double),/赋予 double 值:12.345root"key_object" = Json_temp; / 新建一个 Key(名为:key_object),/赋予 json:Value 对象值。root"key_array".append(“array_string”);/ 新建一个 Key(名为:key_array),/类型为数组,对第一个元素赋值为字符串:”array_string”root"key_array".append(1234); / 为数组 key_array 赋值,对第二个元素赋值为:1234。Json:ValueType type = root.type();/ 获得 root 的类型,此处为 objectValue 类型。注:跟C+ 不同,JavaScript 数组可以为任意类型的值,所以 jsoncpp 也可以。如上几个用法已经可以满足绝大部分 json 应用了,当然 jsoncpp 还有一些其他同能,比如说设置注释、比较 json 大小、交换 json 对象等,都很容易使用,大家自己尝试吧。2、Writer如上说了 Json:Value 的使用方式,现在到了该查看刚才赋值内容的时候了,查看 json 内容,使用 Writer 类即可。Jsoncpp 的 Json:Writer 类是一个纯虚类,并不能直接使用。在此我们使用 Json:Writer 的子类:Json:FastWriter、Json:StyledWriter、Json:StyledStreamWriter。顾名思义,用 Json:FastWriter 来处理 json 应该是最快的,下面我们来试试。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_number”:12345,”key_object”:“age”:26,”name”:”huchao”,”key_string”:”value_string”再次顾名思义,用 Json:StyledWriter 是格式化后的 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” : “value_string”3、ReaderJson:Reader 是用于读取的,说的确切点,是用于将字符串转换为 Json:Value 对象的,下面我们来看个简单的例子。Json:Reader reader;Json:Value json_object;const char* json_document = “”age” : 26,”name” : ”huchao”;if (!reader.parse(json_document, json_object)return 0;std:cout << json_object"name" << std:endl;std:cout << json_object"age" << std:endl;输出结果为:“大中华”26可见,上述代码已经解析出了 json 字符串。 4

    注意事项

    本文(VC下jsoncpp的使用入门.doc)为本站会员(PIYPING)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




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

    三一文库
    收起
    展开