如何在Java中修改现有的jsonobject

时间:2014-08-20 10:13:37

标签: java json jsonobject

我有一个来自javax.json.JsonObject类的现有jsonobject。

我不能为我的生活找出如何修改其中的现有值。理想情况下,我想做这样的事情:

if(object.getString("ObjectUUID").length()==0){
    object.put("ObjectUUID", UUID.randomUUID().toString());
}

根据API,您无法修改该地图。

http://docs.oracle.com/javaee/7/api/javax/json/JsonObject.html

此映射对象提供对JSON对象数据的只读访问权限,并尝试修改映射(无论是直接映射还是通过其集合视图),都会导致UnsupportedOperationException。

目前我通过快速破解解决了这个问题,但必须有一个比这更好的解决方案:

if(object.getString("ObjectUUID").length()==0){
    JsonObjectBuilder job = Json.createObjectBuilder();
    job.add("ObjectUUID", UUID.randomUUID().toString());
    for(String key : object.keySet()){
        if(!key.equals("ObjectUUID")){
            job.add(key, object.get(key));
        }
    }
    object = job.build();
}

那么问题是如何修改现有的jsonobject?

2 个答案:

答案 0 :(得分:1)

我认为没有其他方法可以修改javax.json.JsonObject。

您应该考虑使用jackson-databind

答案 1 :(得分:0)

GSON Guide;

obj.addProperty("Id", "001");

System.out.println("Before: " + obj.get("Id")); // 001

obj.addProperty("Id", "002");

System.out.println("After: " + obj.get("Id")); // 002