C++ 使用jsoncpp 封装及解析 json字符串(包含复杂数组)

转自:https://blog.csdn.net/centnetHY/article/details/83310331?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3

#include <json/json.h>
#include <string>
#include <iostream>
using namespace std;
 
 
int main()
{
    //std::string strValue = "{\"name\":\"json\",\"array\":[{\"cpp\":\"jsoncpp\"},{\"java\":\"jsoninjava\"},{\"php\":\"support\"}]}";    
    
    // 构建json数组
    Json::Value array;
    Json::Value root;
    Json::Value person;
    
    Json::FastWriter writer;
 
 
    person["name"] = "allen";
    person["age"] = 10; 
    person["sex"] = "male";
    root.append(person);
 
    person["name"] = "keiv";
    person["age"] = 20; 
    person["sex"] = "female";
    root.append(person);
    
    person["name"] = "lihua";
    person["age"] = 10; 
    person["sex"] = "female";
    root.append(person);
 
    // 添加数组格式
    //array["array"].append(root);
    
    // 子节点挂到根节点上
    array["array"] = Json::Value(root);
 
    string data = writer.write(array);
 
    //cout<<data<<endl;  
    //cout<<array.toStyledString()<<endl;
    
    
// 解析Json字符串
    string strValue = array.toStyledString();      // json对象转变为json字符串
    cout<<strValue<<endl;
 
    Json::Reader reader;
    Json::Value value;
 
    if (reader.parse(strValue, value))            // json字符串转为json对象
    {   
        for (unsigned int i = 0; i < value["array"].size(); i++)
        {   
            string name = value["array"][i]["name"].asString();
            int     age = value["array"][i]["age"].asInt();
            string sex  = value["array"][i]["sex"].asString();
 
            cout<<name<<" "<<age<<" "<<sex<<endl;
        }
    }
 
    return 0;
}

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 4 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐