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,从中生成一个JsonArrayJsonObject从你的价值观中创造一个新的。将其添加到数组中。然后写完整的数组。

于 2014-03-30T00:39:18.133 回答
1

你不能简单地“追加”。在一般情况下,您必须读取 JSON,修改树状结构的内存映像,然后将其“序列化”回线性 JSON。

在上述非常简单的情况下,您理论上可以搜索到最后,在 close 上退格],然后写出,,第二个对象和一个新的 close ],但这不是更新 JSON 的通用解决方案。

于 2014-03-30T02:48:05.080 回答