4

以下の例では、namebalance?の取り方を示しています。

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

2 に答える 2

14

簡単。

rapidjson::Document doc;
doc.Parse(str);
const Value& user = doc["user"];
string name = user["Name"].GetString();
string balance = user["Balance"].GetString();
于 2015-07-09T14:22:54.153 に答える
0

私は Rapidjson についてあまり知りません。C++ で json を解析するためのサードパーティ ライブラリであることだけは知っています。しかし、私が言いたいのは、この問題を解決するためにブーストを使用してみませんか。私のコードを教えてください。問題は完全に解決されました。

コードを実行する前に、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. あなたの問題を解決できると思います。

于 2015-06-11T09:14:45.193 に答える