2017-02-08 12 views
2

My Jsonファイルは以下のようになります。 (リスト(リスト))java jacksonを使用してjsonファイルの値を更新する方法

[[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番目のリスト(3番目のリストの5番目のインデックス)の値を置き換えたいと思います。すなわち:[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(); 

     } 
    } 
} 
関連する問題