2014-03-28 6 views
0

:JSR 353 (자바 JSON 처리를위한 API)와 JSON 파일에 객체를 추가하는 방법 내가, 예를 JSON 파일을 열고 루트 배열의 일부 개체를 추가하고자하는 JSR-353 (<a href="https://jsonp.java.net/index.html" rel="nofollow">https://jsonp.java.net/index.html</a>) 를 사용

[{"foo":"bar"}] 

이 같은 대한 코드 싶습니다 :

try(JsonGenerator writer = Json.createGenerator(new FileOutputStream(this.file))){ 
    writer.writeStartObject().write("hello", "world").writeEnd(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

그리고 결국 구하십시오

[ 
    {"foo":"bar"}, 
    {"hello":"world"} 
] 

참고 : 내 데이터를 추가하기 위해 전체 json 메모리를로드하지 않아도됩니다.

답변

2

참고 : 데이터를 추가하려면 전체 json 메모리를로드하지 않아도됩니다.

기본적으로 할 수 없습니다. write(..)이 어디에 쓸 것인지 알 수 있도록 전체 데이터 구조를 구문 분석해야합니다. 그렇지 않으면, 그냥 어딘가에 추가하고 그 JSON 형식을 깰 수도 있습니다.

파일에서 JSON을 읽고 JsonArray을 생성하십시오. 값에서 새 JsonObject을 만듭니다. 배열에 추가하십시오. 그런 다음 전체 배열을 작성하십시오.

1

단순히 "추가"할 수 없습니다. 일반적인 경우 JSON을 읽고 트리 구조의 메모리 이미지를 수정 한 다음 다시 선형 JSON으로 "직렬화"해야합니다.

매우 간단한 경우

같은 당신이 위의 이론에 끝까지 추구 수 있기 때문에, 닫는 ] 이상 백 스페이스는 다음 ,, 두 번째 개체, 새로운 폐쇄 ]을 쓸 수 있지만 그것은 업데이트에 대한 일반적인 해결책이 아니다 JSON.