jsoncpp的简单使用

0、引用

http://www.json.org/

http://www.json.org.cn/

1、Json简介

Json是一种轻量级数据交换格式。它的基本结构包括 (pair)、值的有序列表(array)。pair 结构和array结构可以统称为对象(Object);pair object中的key必须是个字符串,pair object中的value可以是任意数据类型(pair object、array object、string、int 等等). array中的成员也可以是任意类型,但要array中所有value的数据类型一致。

jsoncpp的简单使用_第1张图片

图1

jsoncpp的简单使用_第2张图片

图2

2、Jsoncpp简介

c++使用jsoncpp封装和解析json数据。重要的数据结构 Json::Value root; Json::value 就是Objec数据类型。如果要当成pair object,则使用方式如下root["key"] = value; 如果当成array object,则使用方式如下,root.append(value); Object可以嵌套使用。例如 {“name”: {"sex": "man"}},可以用jsoncpp写成 root["name"]["sex"] = "man";实际上array的valu在内部也是有key的,这个key就是序列index。

3、Jsoncpp表示Json对象

{“name”:"jolan",

    “address”:{“province”:“beijing”,“area”:“haidian”},

    “Hoby”:["running","coding","football"]

};

上面的Json对象用Jsoncpp可以这样描述:

Json::Value root;

root["name"] = "jolan";

root["addres"]["province"] = "beijing";

root["addres"]["area"] = "haidian";

root["Hoby"].append(“running”);

root["Hoby"].append("coding");

root["Hoby"].append("football");

如果数组的value是个Object,则写填充好Object,再append。例如 {"people":[{"name":"jolan"},{"name":"linus"}]}

Json::Value root;

Json::Value element;

element["name"] = "jolan";

root.append(element);

element["name"] = "linus";

root.append(element);



4、解析Jsoncpp对象

Jsoncpp对象读取到最后,都只能用基本类型来解析。例如: 如何解析root["addres"]["province"];面对root["addres"]["province"]的时候,要告诉Jsoncpp如何看到这个值,如果,不指定的话就默认为都是Json::value 对象;因此正确的解析应该是 std::string strPro = root["addres"]["province"].asString(),类似的,还有asDouble()、asInt()、asUInt()等等。 如果读取到的某个对象是数组列表,则用下标取出这个数据对应的value。例如 root["Hoby"][0],root["Hoby"].size()指示了数组对象的大小。

3、Jsonccpp序列化Json对象

Json::FastWriter fw;

Json::Value oRoot;

std::string stdBody  = fw(oRoot)

5、Jsoncpp反序列化Json字符串

Json::Reader oReader;

Json::Value  oData;

if(!oReader.parse(strRspBody.c_str(), oData, false)) {

return -50;

}

4、遍历Key字段

Json::Value::Members oMember = oData.getMemberNames();

Json::Value::Members::iterator iter;

for(iter=oMember.begin();iter != oMember.end();++iter) {

LOGSYS_WATER(_LC_DEBUG_,"key:%s",(*iter).c_str());

}

你可能感兴趣的:(jsoncpp的简单使用)