Boost JSON是一個JSON解析器和生成器庫,可以方便地解析和生成JSON數據。它是Boost C++庫的一部分,使用C++編寫,可以在跨平臺環境下使用。
下面是一個簡單的解析JSON對象的示例:
#include <boost/json.hpp>
#include <iostream>
#include <string>
using namespace boost::json;
int main()
{
std::string json_str = R"({
"name": "Tom",
"age": 18,
"address": {
"country": "China",
"city": "Shanghai"
},
"hobbies": ["reading", "traveling"]
})";
value json_value = parse(json_str);
object& obj = json_value.as_object();
std::string name = obj.at("name").as_string().c_str();
int age = obj.at("age").as_int64();
std::string country = obj["address"].as_object().at("country").as_string().c_str();
std::string city = obj["address"].as_object().at("city").as_string().c_str();
array& hobbies = obj["hobbies"].as_array();
for (auto& hobby : hobbies)
{
std::string str = hobby.as_string().c_str();
std::cout << str << std::endl;
}
return 0;
}
解析結果包括JSON對象中的字符串、整數、數組以及嵌套對象和數組。可以通過使用Boost JSON庫將JSON數據轉換為C++對象來使C++代碼更具可讀性,而不是使用一些復雜的JSON解析庫。
下面是一個生成JSON對象的示例:
#include <boost/json.hpp>
#include <iostream>
#include <string>
using namespace boost::json;
int main()
{
object json_obj{
{"name", "Tom"},
{"age", 18},
{"address", {
{"country", "China"},
{"city", "Shanghai"}
}},
{"hobbies", {"reading", "traveling"}}
};
std::string json_str = serialize(json_obj);
std::cout << json_str << std::endl;
return 0;
}
生成JSON對象的示例使用了Boost JSON庫中的serialize函數。使用該函數可以將C++對象轉換為JSON字符串。這種方法可以避免手動構建JSON字符串的麻煩和錯誤。