C++ json库介绍 - json11的使用
企业开发
2023-04-06 15:52:32
阅读次数: 0
简介
- 本文章主要介绍下json11库的使用
- json11 : json11是一个轻量级的C++11库, 提供JSON的序列化和反序列化功能。使用时只需要在我们的工程中引入头文件json11.hpp和源文件json11.cpp即可使用。
使用json11解析json
- 单层json结构解析
- 代码
-
int main(){
std::string srcJson = "{\"code\":0, \"flag\":true, \"msg\":\"success\"}";
std::string err;
json11::Json mJson = json11::Json::parse(srcJson, err);
int code = mJson["code"].int_value();
bool flag = mJson["flag"].bool_value();
std::string msg = mJson["msg"].string_value();
std::cout << "code : " << code << std::endl;
std::cout << "flag : " << flag << std::endl;
std::cout << "msg : " << msg << std::endl;
return 0;
}
- 结果展示
-
code : 0
flag : 1
msg : success
- 多层json结构解析
- 代码
-
int main(){
std::string srcJson = "{\"code\":0, \"flag\":true, \"msg\":\"success\", \"data\":{\"name\":\"jack\", \"age\":28}}";
std::string err;
json11::Json mJson = json11::Json::parse(srcJson, err);
int code = mJson["code"].int_value();
bool flag = mJson["flag"].bool_value();
std::string msg = mJson["msg"].string_value();
std::string name = mJson["data"]["name"].string_value();
int age = mJson["data"]["age"].int_value();
std::cout << "code : " << code << std::endl;
std::cout << "flag : " << flag << std::endl;
std::cout << "msg : " << msg << std::endl;
std::cout << "name : " << name << std::endl;
std::cout << "age : " << age << std::endl;
return 0;
}
- 结果展示
-
code : 0
flag : 1
msg : success
name : jack
age : 28
- 包含数组的json结构解析
- 代码
-
int main(){
std::string srcJson = "{\"code\":0, \"flag\":true, \"msg\":\"success\", \"data\":[\"http\", \"TCP\", \"UDP\"]}";
std::string err;
json11::Json mJson = json11::Json::parse(srcJson, err);
int code = mJson["code"].int_value();
bool flag = mJson["flag"].bool_value();
std::string msg = mJson["msg"].string_value();
json11::Json::array arr = mJson["data"].array_items();
std::cout << "code : " << code << std::endl;
std::cout << "flag : " << flag << std::endl;
std::cout << "msg : " << msg << std::endl;
for(int i = 0; i < arr.size(); i++){
std::cout << arr[i].dump() <<std::endl;
}
return 0;
}
- 结果展示
-
code : 0
flag : 1
msg : success
"http"
"TCP"
"UDP"
使用json11构建json对象
- 单层json结构构建
- 代码
-
json11::Json myJson = json11::Json::object {
{
"code", 0 },
{
"flag", true },
{
"msg", "success"}
};
std::cout<< myJson.dump() <<std::endl;
- 结果展示
-
{"code": 0, "flag": true, "msg": "success"}
- 多层json结构构建
- 代码
-
json11::Json myJson = json11::Json::object {
{
"code", 0 },
{
"flag", true },
{
"msg", "success"},
{
"data", json11::Json::object{
{
"name", "lucy"}, {
"age", 28} } }
};
std::cout<< myJson.dump() <<std::endl;
- 结果展示
-
{"code": 0, "data": {"age": 28, "name": "lucy"}, "flag": true, "msg": "success"}
- 包含数组的json结构构建
- 代码
-
json11::Json myJson = json11::Json::object {
{
"code", 0 },
{
"flag", true },
{
"msg", "success"},
{
"data", json11::Json::array{
"aa", "bb", "cc"}}
};
std::cout<< myJson.dump() <<std::endl;
- 结果展示
-
{"code": 0, "data": ["aa", "bb", "cc"], "flag": true, "msg": "success"}
转载自blog.csdn.net/new9232/article/details/128511137