26

JSONCPP にはライターがありますが、パーサーから情報を取得し、それを文字列またはストリームに出力するだけのようです。新しいオブジェクト、配列、値、文字列などを変更または作成してファイルに書き込むにはどうすればよいですか?

4

5 に答える 5

49
#include<json/writer.h>

コード:

    Json::Value event;   
    Json::Value vec(Json::arrayValue);
    vec.append(Json::Value(1));
    vec.append(Json::Value(2));
    vec.append(Json::Value(3));

    event["competitors"]["home"]["name"] = "Liverpool";
    event["competitors"]["away"]["code"] = 89223;
    event["competitors"]["away"]["name"] = "Aston Villa";
    event["competitors"]["away"]["code"]=vec;

    std::cout << event << std::endl;

出力:

{
        "competitors" : 
        {
                "away" : 
                {
                        "code" : [ 1, 2, 3 ],
                        "name" : "Aston Villa"
                },
                "home" : 
                {
                        "name" : "Liverpool"
                }
        }
}
于 2013-01-08T08:40:58.527 に答える
11
#include <json.h>
#include <iostream>
#include <fstream>

void main()
{
    std::ofstream file_id;
    op_file_id.open("file.txt");

    Json::Value value_obj;
    //populate 'value_obj' with the objects, arrays etc.

    Json::StyledWriter styledWriter;
    file_id << styledWriter.write(value_obj);

    file_id.close();
}
于 2015-05-11T19:28:30.327 に答える
10

AFAICTでは、すべてのJSONデータ型に対応するJson :: Value型のオブジェクトを作成し、その結果をJson :: Writer(具体的には、その派生型の1つ)または単にストリームに渡します。

例:3つの整数の配列をファイルに書き込むには:

Json::Value vec(Json::arrayValue);
vec.append(Json::Value(1));
vec.append(Json::Value(2));
vec.append(Json::Value(3));
std::cout << vec;
于 2010-11-27T03:45:31.747 に答える
3

まず、目的の を作成する必要がありますJSON::Value。すべてのコンストラクターを確認する必要があります ( first )。必要な階層を作成するには、appendおよび operator[] オーバーロードを参照してください。オブジェクトの配列インデックス文字列キーの両方にオーバーロードがあります。

JSON 値を書き戻す 1 つの方法は、StyledStreamWriter::writeandを使用することですofstream

書き方については、cegprakash の回答を参照してください。

于 2010-11-27T06:43:01.717 に答える