使用ObjectMapper更新映射到字符串的对象

时间:2017-01-08 11:18:45

标签: java json objectmapper

我使用ObjectMapper使用以下代码将我的Object映射到json字符串。然后将其添加到数组中。如何更新已添加的对象?我有一个唯一的id对象。现在它被添加为数组中的新条目。

final JSONArray jArray = new JSONArray();
while(){
    //some code here
    ObjectMapper mapper = new ObjectMapper();
    String jString;                 
    try {
        jString = mapper.writeValueAsString(myObject);
        jArray.add(jString);
    } catch (JsonProcessingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

实施例, 在数组myobject是

["{\"id\":\"25641\",\"name\":abc..... 

现在如果名称发生变化,我必须更新它。当我添加对象时,它会像

那样重复
["{\"id\":\"25641\",\"name\":abc.....
["{\"id\":\"25641\",\"name\":pqr.....

1 个答案:

答案 0 :(得分:0)

为什么不将对象存储在普通数组或集合中?然后,当您需要进行一些修改时,只需更新数组/集合中的对象并重新创建整个JSONArray(如果需要)

更新(感谢mibrahim.iti):

例如使用

Map<Integer, Object> map = new HashMap<>();
map.put(500, objectOfId500);//this will replace old object with new one
map.values();//for retrieving all objects then using it in final mapping

所以最后这个方法应该是这样的:

Map<Integer, Object> map = new HashMap<>();
while(){
    map.put(myObject.getId(), myObject);
}
Collection<Object> coll = map.values(); // Final objects which will be converted to JSON Array
final JSONArray jArray = createJSONArray(coll);