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

#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;
}

  • 7
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值