javax.json : Add new JsonNumber to existing JsonObject

标签 java json

我想将属性添加到 JsonObject 的现有实例中。如果此属性是 boolean,这很容易:

JsonObject jo = ....;
jo.put("booleanProperty", JsonValue.TRUE);

但是,我也想添加一个 JsonNumber,但我找不到创建 JsonNumber 实例的方法。这是我可以做的:

JsonObjectBuilder job = Json.createObjectBuilder();
JsonNumber jn = job.add("number", 42).build().getJsonNumber("number");
jo.put("numberProperty", jn);

但我想不出更肮脏的方式来完成我的任务。那么 - 是否有更直接、更简洁的方法将 JsonNumber 添加到 JsonObject 的现有实例?

最佳答案

好吧,我自己想通了:你不能

JsonObject 应该是不可变的。即使 JsonObject.put(key, value) 存在,在运行时也会抛出 UnsupportedOperationException。因此,如果您想将键/值对添加到现有的 JsonObject 中,您将需要类似的东西

private JsonObjectBuilder jsonObjectToBuilder(JsonObject jo) {
    JsonObjectBuilder job = Json.createObjectBuilder();

    for (Entry<String, JsonValue> entry : jo.entrySet()) {
        job.add(entry.getKey(), entry.getValue());
    }

    return job;
}

然后使用它

JsonObject jo = ...;
jo = jsonObjectToBuilder(jo).add("numberProperty", 42).build();

关于javax.json : Add new JsonNumber to existing JsonObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26346060/

相关文章:

java - Spring 3.2 Web MVC @ModelAttribute 不带标签

java - 如何在程序运行时更新GUI?

c# - Mongodb Bson类型转Json

python - 避免在 python 上使用 utf-8

mysql - 将 json 存储在字段中还是使用单独的表进行规范化?

java - 解析JSON多个对象

java - 了解上下文切换期间的 Java 内存模型

java - 将 Bundle 转换为 JSON

php - 删除空 JSON 参数

java - 关于 hibernate 中一对多关系的查询