我有一个来自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?
答案 0 :(得分:1)
我认为没有其他方法可以修改javax.json.JsonObject。
您应该考虑使用jackson-databind。
答案 1 :(得分:0)
obj.addProperty("Id", "001");
System.out.println("Before: " + obj.get("Id")); // 001
obj.addProperty("Id", "002");
System.out.println("After: " + obj.get("Id")); // 002