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的數據類型一致。

圖1

圖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());

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容