0

JSR-353 ( https://jsonp.java.net/index.html ) を使用して、json ファイルを開き、ルート配列にいくつかのオブジェクトを追加したいと思います。

[{"foo":"bar"}]

私はこのようなコードを希望します:

try(JsonGenerator writer = Json.createGenerator(new FileOutputStream(this.file))){
    writer.writeStartObject().write("hello", "world").writeEnd();
} catch (IOException e) {
    e.printStackTrace();
}

そして最後に取得します:

[
    {"foo":"bar"},
    {"hello":"world"}
]

注:データを追加するために完全なjsonをメモリ内にロードする必要はありません。

4

2 に答える 2

2

注:データを追加するために完全なjsonをメモリ内にロードする必要はありません。

基本的に、できません。write(..)どこに書き込むべきかを知るために、完全なデータ構造を解析する必要があります。そうしないと、どこかに追加するだけで、JSON 形式が壊れる可能性があります。

そのため、ファイルから JSON を読み取り、そこから を生成しますJsonArray。あなたの価値観から新しいものを創造しJsonObjectてください。それを配列に追加します。次に、完全な配列を書き込みます。

于 2014-03-30T00:39:18.133 に答える
1

単純に「追加」することはできません。一般的なケースでは、JSON を読み取り、ツリー構造のメモリ イメージを変更してから、それを "シリアル化" して線形 JSON に戻す必要があります。

上記のような非常に単純なケースでは、理論的には最後までシークし、終了をバックスペースしてから、 、2 番目のオブジェクト、および新しい終了を]書き出すことができますが、 JSON を更新するための一般的な解決策ではありません。,]

于 2014-03-30T02:48:05.080 に答える