使用javax / json,如何将元素添加到现有的JsonArray?

时间:2016-04-28 14:43:26

标签: java json java-ee

我从文件中读取了一个JSON数组,但我想在数组中添加其他条目。我将如何使用javax.json库进行此操作?

private String getJson(FileInputStream fis) throws IOException {
    JsonReader jsonReader = Json.createReader(fis);
    // Place where I'd like to get more entries.

    String temp = jsonReader.readArray().toString();
    jsonReader.close();
    fis.close();
    return temp;
}

预览文件的JSON格式:

[
    {"imgOne": "test2.png", "imgTwo": "test1.png", "score": 123123.1},
    {"imgOne": "test2.png", "imgTwo": "test1.png", "score": 1234533.1}
]

1 个答案:

答案 0 :(得分:1)

简短的回答是,你不能。 JsonArray(和其他值类型)意味着不可变。 javadoc陈述

  

JsonArray表示一个不可变的JSON数组(一个有序的序列)   零个或多个值)。它还提供了一个不可修改的列表视图   数组中的值。

很长的答案是通过复制旧的{和{I}}对象来创建一个新的JsonArray对象。

例如

// Place where I'd like to get more entries.
JsonArray oldArray = jsonReader.readArray();
// new array builder
JsonArrayBuilder builder = Json.createArrayBuilder();
// copy over old values
for (JsonValue value : oldArray) {
    builder.add(value);
}
// add new values
builder.add("new string value");
// done
JsonArray newArray = builder.build();