2015-06-11 2 views

ответ

1

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

6

Простой.

rapidjson::Document doc; 
doc.Parse(str); 
const Value& user = doc["user"]; 
string name = user["Name"].GetString(); 
string balance = user["Balance"].GetString(); 
Смежные вопросы