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

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

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

2 ответа

Легко.

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

Я не очень хорошо знаю 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, Я думаю, что это может решить вашу проблему.

Другие вопросы по тегам