JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式,它由JavaScript語(yǔ)言衍生而來(lái),以易于人們閱讀和編寫的形式來(lái)表示結(jié)構(gòu)化的數(shù)據(jù)。C++是一種被廣泛應(yīng)用的編程語(yǔ)言,也有很多用于解析JSON的庫(kù)。在本文中,我們將介紹C++中常用的JSON解析工具。
第一個(gè)工具是RapidJSON,它是一個(gè)高效的C++ JSON解析器/生成器,支持SAX、DOM風(fēng)格、以及流式API。下面是一個(gè)使用RapidJSON解析JSON字符串的示例:
#include "rapidjson/document.h" #include "rapidjson/writer.h" #include "rapidjson/stringbuffer.h" using namespace rapidjson; int main() { const char* json = "{\"hello\":\"world\"}"; Document document; document.Parse(json); assert(document.HasMember("hello")); assert(document["hello"].IsString()); assert(document["hello"].GetString() == std::string("world")); }
在這個(gè)示例中,我們將一個(gè)JSON字符串解析為一個(gè)RapidJSON的DOM對(duì)象,并使用斷言驗(yàn)證它的內(nèi)容。
另一個(gè)常用的C++ JSON解析工具是JSON for Modern C++(也稱為nlohmann/json),它是一個(gè)現(xiàn)代、輕量級(jí)、面向?qū)ο蟮腏SON庫(kù)。下面是一個(gè)使用nlohmann/json解析JSON字符串的示例:
#include "json.hpp" using json = nlohmann::json; int main() { const char* json_str = "{ \"happy\": true, \"pi\": 3.141 }"; json j = json::parse(json_str); assert(j["happy"] == true); assert(j["pi"] == 3.141); }
在這個(gè)示例中,我們同樣將一個(gè)JSON字符串解析為一個(gè)JSON對(duì)象,并使用斷言驗(yàn)證它的內(nèi)容。
總之,C++中有很多用于解析JSON的庫(kù),RapidJSON和JSON for Modern C++都是其中比較流行的選擇。不同的庫(kù)有不同的優(yōu)缺點(diǎn),根據(jù)需求選擇最適合的庫(kù)才是最重要的。