2016-06-26 2 views
2

내 워크 플로에 일부 JSONObject가 있고 JSON 파일에 같은 JSONObject를 저장하여 저장합니다.JSON 파일 - Java : 필드 값 편집/업데이트

필드가 필요한 곳은이고 새로운 JSONObjects 인스턴스의 내용은 json 파일을 효율적으로 업데이트하고 싶습니다.

예 : 내가 좋아하는 것 일반적으로

if (!(ObjectInMemory.get(key1).equals(ObjectOnFile.get(key1))) 
     // update file field value <--- how to? 

: 내가 좋아하는

ObjectInMemory = {key1:val1_newer, key2:val2_newer,...} 

가 업데이트 될 것 가지고 내가 메모리에서

ObjectOnFile = {key1:val1, key2:val2,...} 

이 파일에

발을 업데이트하다 그 내용이 새로운 (다른) 모든 열쇠의 ue.

사실 내 코드는 다음과 같습니다

import org.json.JSONObject; 
import com.fasterxml.jackson.databind.ObjectMapper; 

ObjectMapper mapper = new ObjectMapper(); 
Sting key = "key1"; //whatever 
JSONObject jo = new JSONObject("{key1:\"val1\", key2:\"val2\"}"); 
JSONObject root = mapper.readValue(new File(json_file), JSONObject.class); 
JSONObject val_newer = jo.getJSONObject(key); 
JSONObject val_older = root.getJSObject(key); 
if(!val_newer.equals(val_older)){ 
    root.put(key,val_newer); 
/*write back root to the json file...how? */ 
} 

답변

1

은 간단히 다음과 같이 할 수 있습니다

import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 

import org.json.JSONException; 
import org.json.JSONObject; 

import com.fasterxml.jackson.databind.ObjectMapper; 


public class Test { 

    public static void main(String[] args) throws JSONException, IOException 
    { 
     ObjectMapper mapper = new ObjectMapper(); 
     String key = "key1"; //whatever 

     JSONObject jo = new JSONObject("{key1:\"val1\", key2:\"val2\"}"); 
     //Read from file 
     JSONObject root = mapper.readValue(new File("json_file"), JSONObject.class); 

     String val_newer = jo.getString(key); 
     String val_older = root.getString(key); 

     //Compare values 
     if(!val_newer.equals(val_older)) 
     { 
      //Update value in object 
      root.put(key,val_newer); 

      //Write into the file 
      try (FileWriter file = new FileWriter("json_file")) 
      { 
       file.write(root.toString()); 
       System.out.println("Successfully updated json object to file...!!"); 
      } 
     } 
    } 
} 
+0

안녕 PVR, 감사 대답. 이렇게하면 write 함수가 전체 파일을 다시 쓰거나 부분 만 업데이트됩니까? – GrayFox

+0

파일 전체 json을 다시 작성하십시오. – PVR

+0

답변 해 주셔서 감사합니다. 해결 된 :) – GrayFox