В приведенном ниже примере, как взять name
и balance
?
{
"user": {
"Name": "John",
"Balance": "2000.53"
}
}
В приведенном ниже примере, как взять name
и balance
?
{
"user": {
"Name": "John",
"Balance": "2000.53"
}
}
Легкий.
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
. Я думаю, что это может решить вашу проблему.