2017-02-08 8 views
2

Мой Json-файл будет чем-то вроде ниже. (List (Список))Как обновить значение в json-файле с помощью java jackson

[[0,1759,10.0,20.0,30.0,40.0,50.0,60.0,70.0,590,1759] 
[1,1533,10.0,20.0,30.0,40.0,50.0,60.0,70.0,590,1533] 
[2,2638,10.0,20.0,30.0,40.0,50.0,60.0,70.0,590,2638] 
[3,2639,10.0,20.0,30.0,40.0,50.0,60.0,70.0,590,2639] 
[4,2640,10.0,20.0,30.0,40.0,50.0,60.0,70.0,590,2640]] 

Я хочу, чтобы заменить значение в 3 списка (5 индекса в 3 списке). т.е.: [2,2638,10.0,20.0,30.0,40.0,50.0,60.0,70.0,590,2638]

и я хочу изменить значение 30.0 как 10.0. Как это сделать, не получая целые данные файла.

+0

Прежде всего, это не является допустимым JSON. –

ответ

0

Насколько мне известно, я не могу обойтись без чтения всего файла, если вы хотите использовать JSON.

Попробуйте это может быть любая помощь

import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.util.List; 
import java.util.ListIterator; 

import com.fasterxml.jackson.core.type.TypeReference; 
import com.fasterxml.jackson.databind.ObjectMapper; 

/** 
* 
* @author Ravi P 
*/ 
public class Test { 

    public static void main(String[] args) { 

     try { 

      List<List<Integer>> jsonParentArr = new ObjectMapper().readValue(new File("C:\\tmp\\Details.json"), new TypeReference<List<List<Integer>>>() { 
      }); // read the data from file and form a list 

      System.out.println(jsonParentArr.get(2)); // array values before replacing 30 

      ListIterator<Integer> childJsonArr = jsonParentArr.get(2).listIterator(); // get the 3rd array 

      while (childJsonArr.hasNext()) { 

       if (childJsonArr.next() == 30) { // replace if the value to 10.0 if the exsting value is 30 

        childJsonArr.set(10); 
       } 
      } 

      System.out.println(jsonParentArr.get(2)); // array values after replacing 30 

      try (BufferedWriter bWriter = new BufferedWriter(new FileWriter("C:\\tmp\\Details.json"))) { 

       bWriter.write(jsonParentArr.toString()); // write back the result to same file 

      } catch (Exception e) { 

       e.printStackTrace(); 
      } 

     } catch (Exception e) { 

      e.printStackTrace(); 

     } 
    } 
} 
Смежные вопросы