Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 JsonPatch 인터페이스란? 개념부터 활용 예제까지

JsonPatch 인터페이스는 대상 JSON 구조에 적용할 수 있는 일련의 연산(sequence of operations)을 저장하기 위한 형식입니다. add(추가), remove(삭제), replace(교체), copy(복사), move(이동), test(검증)와 같은 다양한 연산을 JsonPatch에 저장해 두었다가, JSON 구조에 한 번에 적용할 수 있습니다.

JsonPatchBuilder 인터페이스는 Json.createPatchBuilder() 메서드를 호출하여 JSON 패치를 단계적으로 구성할 때 사용됩니다. 이러한 패치 방식은 전체 JSON 문서를 교체하는 대신 변경된 부분만 전송할 수 있기 때문에, REST API 설계 시 데이터 전송량을 줄이고 네트워크 효율성을 높이는 데 매우 유용합니다.

대상 JSON 파일


Java에서 JsonPatch 인터페이스란? 개념부터 활용 예제까지

예제 코드

import java.io.*;
import javax.json.Json;
import javax.json.JsonPatch;
import javax.json.JsonPatchBuilder;
import javax.json.JsonReader;
import javax.json.JsonStructure;
public class JsonPatchTest {
   public static void main(String[] args) throws Exception {
      JsonPatchBuilder jsonPatchBuilder = Json.createPatchBuilder();
      JsonPatch jsonPatch = jsonPatchBuilder.add("/postalCode", "500072").remove("/age").build();
      JsonReader reader = Json.createReader(new FileReader("simple.json"));
      JsonStructure jsonStructure1 = reader.read();
      JsonStructure jsonStructure2 = jsonPatch.apply(jsonStructure1);
      System.out.println(jsonStructure2);
      reader.close();
   }
}

위 예제 코드의 동작 흐름은 다음과 같습니다.

  • Json.createPatchBuilder()를 호출하여 패치 빌더 객체를 생성합니다.
  • add("/postalCode", "500072")로 postalCode 필드를 새로 추가하는 연산을 정의합니다.
  • remove("/age")로 기존의 age 필드를 삭제하는 연산을 추가합니다.
  • build() 메서드로 위 연산들이 담긴 최종 JsonPatch 객체를 완성합니다.
  • simple.json 파일을 읽어 원본 JSON 구조를 얻은 뒤, apply() 메서드로 패치를 적용합니다.

실행 결과

{"firstName":"Raja","lastName":"Ramesh","streetAddress":"Madhapur","city":"Hyderabad","state":"Telangana","phoneNumbers":[{"Mobile":"9959984000"},{"Home":"7702144400"}],"postalCode":"500072"}

실행 결과를 살펴보면, 원본 JSON에서 age 필드는 성공적으로 삭제되었고, 값이 "500072"postalCode 필드가 새롭게 추가된 것을 확인할 수 있습니다. 나머지 필드들은 그대로 유지되며, 이처럼 JsonPatch를 활용하면 JSON 문서의 특정 부분만 선택적으로 수정할 수 있습니다.