【问题标题】:How to append object to a json file with JSR 353 (Java API for JSON Processing)如何使用 JSR 353(用于 JSON 处理的 Java API)将对象附加到 json 文件
【发布时间】:2014-05-08 15:08:29
【问题描述】:

使用 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 来附加我的数据。

【问题讨论】:

    标签: java json append stream-processing jsr-353


    【解决方案1】:

    注意:我不想在内存中加载完整的 json 来追加 我的数据。

    基本上,你不能。您必须解析完整的数据结构,以便您的 write(..) 知道在哪里写。否则,它只是附加在某个地方,这可能会破坏 JSON 格式。

    所以从文件中读取 JSON,从中生成一个JsonArray。根据您的值创建一个新的JsonObject。将其添加到数组中。然后写完整的数组。

    【讨论】:

      【解决方案2】:

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

      在上述非常简单的情况下,理论上您可以搜索到最后,在结束符] 上退格,然后写出,、第二个对象和一个新的结束符],但事实并非如此更新 JSON 的通用解决方案。

      【讨论】:

        猜你喜欢
        • 2016-08-21
        • 2015-03-15
        • 1970-01-01
        • 2018-05-21
        • 1970-01-01
        • 1970-01-01
        • 2020-04-12
        • 1970-01-01
        • 2018-06-30
        相关资源
        最近更新 更多