C++ json库介绍 - json11的使用

简介

  • 本文章主要介绍下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"}
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大草原的小灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值