Java에서 Jackson과 함께 사용자 지정 Serializer 사용

Muhammad Zeeshan 2023년10월12일
  1. Java의 직렬화
  2. 클래스에서 Jackson을 사용하는 사용자 정의 Serializer
  3. Java에서 serialize() 메서드 사용
Java에서 Jackson과 함께 사용자 지정 Serializer 사용

이 튜토리얼에서는 Java에서 Jackson과 함께 사용자 지정 Serializer를 활용하는 방법을 살펴봅니다. 먼저 직렬화 개념을 살펴보겠습니다.

Java의 직렬화

Java의 직렬화 프로세스는 객체를 바이트 스트림으로 변환하는 기술입니다. 이렇게 하면 개체를 파일에 저장할 수 있을 뿐만 아니라 네트워크를 통해 개체를 보낼 수도 있습니다.

직렬화 프로세스는 Java.io를 사용하여 Serializable 인터페이스 구현을 생성하는 것으로 시작됩니다.

클래스에서 Jackson을 사용하는 사용자 정의 Serializer

CustomerProduct라는 두 개의 간단한 클래스를 만들어 봅시다.

코드 - 고객 클래스:

public class Customer {
  public int id;
  public String Cname;
}

코드 - 제품 클래스:

public class Product {
  public int id;
  public String Productname;
  public Customer buyer;
}

클래스에 JsonSerialize 적용

이제 다음과 같이 클래스에 serializer를 등록합니다.

@JsonSerialize(using = ProductSerializer.class)
public class Product {
  public int id;
  public String Productname;
  public Customer buyer;
}

그런 다음 표준 직렬화를 적용합니다.

Product p = new Product(10, "drinks", new Customer(12, "Peter"));
String serialized = new ObjectMapper().writeValueAsString(p);

마지막으로 직렬 변환기에서 생성되고 @JsonSerialize를 사용하여 정의된 개별화된 JSON 출력을 얻습니다.

Java에서 serialize() 메서드 사용

StdSerializer 클래스를 사용하여 사용자 지정 serializer를 구현할 수 있습니다. 이 경우 serialize() 메서드를 재정의해야 합니다.

통사론:

public abstract void serialize(Product val, JsonGenerator jg, SerializerProvider p)
    throws IOException

사용자 지정 serializer가 있어도 상관없다면 Product 클래스용으로 개발할 필요가 없습니다. 대신 Customer 클래스에 대해 하나를 작성해야 합니다.

public void serialize(Product value, JsonGenerator jg, SerializerProvider p)
    throws IOException, JsonProcessingException {
  jg.writeNumber(id);
}
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn