我想将属性添加到 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/