在Borland C++ Builder6中,我們可以使用第三方庫(kù)來解析JSON數(shù)據(jù),這里介紹一種流行的JSON解析庫(kù)jsoncpp。
首先需要下載并安裝jsoncpp,安裝完成后將對(duì)應(yīng)頭文件和庫(kù)文件加入到Borland C++ Builder6的工程中。
#include "json/json.h"
Jsoncpp中有兩個(gè)核心類,分別是Value和Reader。
Value類可以表示任何JSON值,包括數(shù)組、對(duì)象、字符串、數(shù)字等,也可以作為輸出格式的目標(biāo)。
Json::Value root;
Reader類可以解析JSON數(shù)據(jù),并將解析結(jié)果存放在Value類中。
Json::Reader reader; std::string strJson = "{\"name\":\"Tom\",\"age\":20}"; if (reader.parse(strJson, root)) { std::string name = root["name"].asString(); int age = root["age"].asInt(); }
上述代碼解析了一個(gè)JSON字符串,得到了其中的name和age屬性的值。
另外還有一些其他常用的Value方法:
//獲取Value的類型 int type = root.type(); //判斷Value是否為空 bool empty = root.empty(); //獲取Value的大小,對(duì)于對(duì)象是屬性的數(shù)量,對(duì)于數(shù)組是元素的數(shù)量 int size = root.size(); //獲取Value的鍵值對(duì),只適用于對(duì)象 const Json::Value::Members members = root.getMemberNames(); for (Json::Value::Members::const_iterator it = members.begin(); it != members.end(); ++it) { const std::string& key = *it; const Json::Value& value = root[key]; }
最后,需要注意的是,在使用jsoncpp解析JSON數(shù)據(jù)時(shí),需要確保JSON數(shù)據(jù)的格式符合JSON標(biāo)準(zhǔn),特別是要注意引號(hào)的使用情況,否則解析結(jié)果可能會(huì)出現(xiàn)非預(yù)期的情況。