6

例えば:

    Json::Reader reader;
    Json::Value val;
    ifstream file("JSON/test.json");
    bool success = reader.parse(file, val, false);
    vector<string> obj = val.getMemberNames();

    for (int i = 0; i < val.size(); i++)
    {
        // switch type of value
        switch (val.get(obj.at(i), "default").type())
        {
            case stringValue:
                cout << "I'm string" << endl;
                ... need to save **membername** and **value**
                break;
            case intValue:
                cout << "I'm int"  << endl;
                ... need to save **membername** and **value**
                break;
            case nullValue:
                cout << "I'm null"  << endl;
                break;
            case arrayValue:
                 ... code to parse an array (with nested sure) ...
                 ... need to save
                break;
            case objectValue:
                ... code to parse an object (with nested sure) ...
                ... need to save 
                break;
        }
    }

JSON ファイルの例(JSON/test.json):

{
    "layout": "fit",
    "xtype": "viewport",
    "height": 200,
    "style": {
                "backgroundColor": "46f0a8"
             },

           "items": 
           [
             {
                "title": "Management Console",
                "padding": "10 10 10 10",
                "bodyPadding": 10,
                "autoScroll": true,
                "items2": [1, 2, 3]
             }
           ]
 }

配列itemsには、 items2という別の (ネストされた) 配列が表示されます。

アレイで次のことが発生する可能性があります。

array[Jacob, Joseph] or
array[{name: Jacob, name: Joseph}] or
array[{name: Jacob}, {name: Joseph}]

オブジェクトの場合も同様です。もちろん、各フィールドには、多くのネストされたオブジェクト/配列を含めることができます。データを C++ 変数に保存するにはどうすればよいですか?

4

1 に答える 1

0

メインの解析関数を再帰的にしたいと思うでしょう。次に、ベクターなどの STL クラスを使用して、データにより多くのストレージを動的に割り当てることができます。

于 2014-11-12T02:17:36.623 に答える