2017-01-08 5 views
0

Я использую ObjectMapper для сопоставления моего объекта с строкой json, используя следующий код. Затем добавьте это в массив. Как обновить уже добавленный объект? У меня есть уникальный идентификатор объекта. Теперь он добавляется как новая запись в массиве.Объект обновления, сопоставленный с строкой с использованием ObjectMapper

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..... 

ответ

0

Почему бы не хранить объекты в простом массиве или коллекции? Затем, когда вам нужно сделать некоторые модификации просто обновить объект в массиве/коллекции и воссоздать всю JSONArray (если вам это нужно)

Update (благодаря 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); 
Смежные вопросы