使用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来附加我的数据。
答案 0 :(得分:2)
注意:我不想在内存中加载完整的json来追加 我的数据。
基本上,你不能。您必须解析完整的数据结构,以便write(..)
知道在哪里写。否则,它只是附加在某处,可能会破坏JSON格式。
所以从文件中读取JSON,从中生成JsonArray
。从您的值中创建一个新的JsonObject
。将其添加到数组中。然后写完整数组。
答案 1 :(得分:1)
你不能简单地“追加”。在一般情况下,您必须读入JSON,修改树形结构的内存映像,然后将其“序列化”回线性JSON。
在非常简单的情况下,如上所述你理论上可以在结束]
上寻找结尾,退格,然后写出,
,第二个对象,以及新的结束{{1但是,它不是更新JSON的通用解决方案。