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"}
      

猜你喜欢

转载自blog.csdn.net/new9232/article/details/128511137