将新值附加到javax.json.JsonObject

时间:2015-07-24 12:34:27

标签: java json

我们已经返回的代码JsonObject。我想要做的是添加一个新的密钥及其值。 例如,我们有一个这样的对象:

{"id":"12","name":"test"}

我想将其转化为:

{"id":"12","name":"test","status":"complete"}

除了使用put方法之外,我没有在文档中找到我需要的东西。所以我写了这段代码:

JsonObject object = getJsonObject();
JsonString val = new JsonString() {

    public JsonValue.ValueType getValueType() {
        return JsonValue.ValueType.STRING;
    }

    public String getString() {
        return "complete";
    }

    public CharSequence getChars() {
        return (CharSequence) "complete";
    }
};
object.put("status", val);

但它不起作用,崩溃:

java.lang.UnsupportedOperationException

我无法理解什么是错的。我还有其他选择来完成这项任务吗?

2 个答案:

答案 0 :(得分:1)

我不认为JsonObject个实例需要修改。

我认为您最好的选择是创建一个新对象,复制现有属性并向其添加新属性。

您可以使用https://docs.oracle.com/javaee/7/api/javax/json/JsonObjectBuilder.html

答案 1 :(得分:0)

不确定object.put是否有效但您可以使用以下方法将详细信息附加到JSON值: 您可以使用要添加到JSON对象和用户org.json.JSONObject的键和值创建不同的JSON对象 merge()检查密钥:' status'在你的JSON对象中,如果它找不到它,那么它会添加key:value对,否则它会替换它 。你无法编译它,因为你可能没有使用jre 1.8。

我刚验证了以下方法: 只需创建一个新的JSONObject(javax.json.JsonObject而不是JSONObject modifiedJsonObject= new JSONObject(object.toString()); modifiedJsonObject.put("status", "complete");

{{1}}