转载:http://zcg9033586.blog.163.com/blog/static/175217310201112852413788/
使用c++处理json数据交换格式
一、摘要
json的全称为:JavaScript Object Notation ,顾名思义,JSON是用于标记javascript对象的,json官方的解释为:json是一种轻量级的数据传输格式。
本文并不详细介绍json本省的细节,旨在讨论如何使用c++语言来处理json,关于json更具体的细节,可参见json官网;www.json.org
二、本文选择处理json的c++库
本文选择一个第三方库jsoncpp来解析json。jsoncpp是比较出名的c++解析库。在json官网也是首推的。
三、jsoncpp在windows下的编译
要使用第三方源码库,第一步少不了的就是编译,将源代码文件编译成我们方便使用的动态连接库、静态链接库或者静态导入库。
jsoncpp进行json解析的源码文件分布在include/json、src/json、下。其实jisoncoo源码并不多,为了方便产品管理,此处没必要将其便以为动态链接库或者静态导入库,所以我们选择使用静态链接库。
json处理的很完善啦,所有编译选项都已经配置好,打开makefiles/vs71/jsoncpp.sln便可以开始编译(默认是使用vs2003编译器的,打开时直接按照vs2005提示转换即可)
四、jsoncpp使用详解
jsoncpp主要包含三种类型的class:Value\Reader\Writer。jsoncpp中所有对象、类名都在namespace json中,包含json.h即可。
Json::Value只能处理ANSI类型的字符串,如果C++程序使用Unicode编码的,最好加一个Adapt类来适配。
1、Value
JSon:Value是jsoncpp中最基本、最重要的类,用与表示各种类型的对象,jsoncpp支持的对象类型可见Json::Value Type枚举值。
可如下是用Json::Value类:
Json ::Value json_temp;
json_temp["name"]=Json::Value("nana");
json_temp["age"]=Json::Value(26);
其余部分详见转载地址