4

皆さんの助けが必要です。

現在、cJSON を使用して、Json 標準にフォーマットされたデータを解析しています。

以下のデータはデータの一例です。

{
    "time" : {              
        "timezone" : string,
        "ntpservers" : array<string>
    },
    "datetime" : {
        "value" : "2013-10-23 03:35:45.182042",
        "space-custom-class" : "datetime.datetime"
    }
}

私が抱えている問題は、データをキーと値のペアに分割してマップに保存する方法がわからないことです。「時間」がキーであることがわかりますが、値は辞書なので、これを「時間」の値として保存するにはどうすればよいですか。これは「日時」キーに当てはまります。いくつかの反復が関係していることは知っていますが、行き詰まっています。値はプリミティブ型、配列、または辞書である可能性があるため、値はテンプレートのような汎用オブジェクトである必要がありますか? いくつかの例は非常に役立ちます。

助けてくれてありがとう。

4

4 に答える 4

4

JSON.orgには、使用できる多くの C++ JSON パーサー ライブラリがリストされています。

于 2013-10-23T10:52:01.347 に答える
0

boost::property_tree を見てみましょう。これにより、自分でコーディングする必要がなくなります。

http://www.boost.org/doc/libs/1_54_0/doc/html/property_tree.html

于 2013-10-23T10:09:54.727 に答える
0

プロジェクトで使用できる依存関係がわからないため、私の回答が受け入れられない場合があります。

Qt5 には、必要に応じて JSON を記述できるクラスがいくつか存在します。これは、デモンストレーション用の小さな例です。

#include <QJsonObject>
#include <QJsonArray>
#include <QJsonDocument>
#include <QDebug>

int main(int argc, char *argv[])
{
    QJsonObject topQuery;
    topQuery["objectType"] = QString("objects.Word");

    QJsonObject parameters;
    parameters["language"] = QString("en");
    parameters["to"] = QString("ru");
    parameters["rate"] = 0;
    parameters["isInput"] = true;

    topQuery["query"] = parameters;

    QJsonObject sortParameter;
    sortParameter["sortBy"] = QString("rate");
    sortParameter["direction"] = QString("desc");

    QJsonArray sortArray;
    sortArray.append(sortParameter);

    topQuery["sort"] = sortArray;
    topQuery["limit"] = 10;

    QJsonDocument document(topQuery);
    qDebug() << document.toJson();
}

このコードの結果は次のようになります。

{
    "limit": 10,
    "objectType": "objects.Word",
    "query": {
        "isInput": true,
        "language": "en",
        "rate": 0,
        "to": "ru"
    },
    "sort": [
        {
            "direction": "desc",
            "sortBy": "rate"
        }
    ]
}

Qt4 には、simular api: http://qjson.sourceforge.net/を備えたライブラリも存在します。

以前は、stl::map のように、json を作成するための依存関係のない C++ ライブラリも探していましたが、Qt バリアントしか見つかりませんでした。

于 2013-10-23T11:41:26.627 に答える