如何在C ++中使用Rapidjson获取嵌套的JSON值

时间:2015-06-11 06:36:19

标签: c++ json rapidjson

在下面的示例中,如何选择namebalance

{
    "user": {
        "Name": "John",
        "Balance": "2000.53"
    }
}

2 个答案:

答案 0 :(得分:8)

易。

rapidjson::Document doc;
doc.Parse(str);
const Value& user = doc["user"];
string name = user["Name"].GetString();
string balance = user["Balance"].GetString();

答案 1 :(得分:0)

我不太了解Rapidjson,只知道它是用于在C ++中解析json的第三方库。但是我想说,为什么不使用boost来解决这个问题。给你我的代码,它完美地解决了你的问题。

在运行我的代码之前,请安装boost库。强烈推荐它!

#include <boost/property_tree/json_parser.hpp>

#include <string>

#include <sstream>

#include <iostream>

using namespace std;

int main()
{
    boost::property_tree::ptree parser;
    const string str = "{ \"user\": { \"Name\": \"John\", \"Balance\": \"2000.53\" } }";
    stringstream ss(str);
    boost::property_tree::json_parser::read_json(ss, parser);

    //get "user"
    boost::property_tree::ptree user_array = parser.get_child("user");

    //get "Name"
    const string name = user_array.get<string>("Name");
    //get "Balance"
    const string balance = user_array.get<string>("Balance");
    cout << name << ' ' << balance << endl;
    return 0;
}

代码在gcc 4.7中测试良好,提升1.57。您可以获得输出:John 2000.53。我认为它可以解决你的问题。