Как получить вложенные значения JSON с помощью Rapidjson в C++

В приведенном ниже примере, как взять name и balance?

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

person Karthi    schedule 11.06.2015    source источник
comment
Ну давай же. По крайней мере, попробуйте   -  person James    schedule 11.06.2015


Ответы (2)


Легкий.

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

Я мало знаю Rapidjson, знаю только, что это сторонняя библиотека для разбора json на C++. Но я хочу сказать, почему бы вам не использовать 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, boost 1.57. Вы можете получить вывод: John 2000.53. Я думаю, что это может решить вашу проблему.

person cwfighter    schedule 11.06.2015