简介
- 本文章主要介绍下json11库的使用
- json11 : json11是一个轻量级的C++11库, 提供JSON的序列化和反序列化功能。使用时只需要在我们的工程中引入头文件json11.hpp和源文件json11.cpp即可使用。
使用json11解析json
- 单层json结构解析
- 代码
-
int main(){ std::string srcJson = "{\"code\":0, \"flag\":true, \"msg\":\"success\"}"; //反序列化为json对象 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}}"; //反序列化为json对象 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\"]}"; //反序列化为json对象 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"}