[java] Jackson의 커스텀 직렬화와 역직렬화 처리
Jackson은 Java에서 JSON 데이터를 처리하는 데 널리 사용되는 라이브러리이다. 기본적으로 Jackson은 객체를 JSON 문자열로 변환하거나, JSON 문자열을 객체로 역직렬화하는 데 사용된다. 하지만 때로는 특정한 방식으로 객체를 직렬화하거나 역직렬화해야 할 수도 있다.
커스텀 직렬화
Jackson에서 객체를 커스텀하게 직렬화하려면 JsonSerializer
클래스를 상속받아 직렬화를 정의해야 한다. 다음은 간단한 예제이다.
public class CustomSerializer extends JsonSerializer<CustomObject> {
@Override
public void serialize(CustomObject value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeStartObject();
gen.writeStringField("customField", value.getCustomField());
gen.writeEndObject();
}
}
위 코드에서 CustomObject
는 커스텀 직렬화를 적용하고자 하는 객체를 나타낸다. serialize
메서드 내에서 직렬화를 수행하고, JsonGenerator
를 사용하여 필드를 쓰거나 객체를 시작/종료하는 등의 작업을 수행한다.
커스텀 역직렬화
Jackson에서 객체를 커스텀하게 역직렬화하려면 JsonDeserializer
클래스를 상속받아 역직렬화를 정의해야 한다. 다음은 간단한 예제이다.
public class CustomDeserializer extends JsonDeserializer<CustomObject> {
@Override
public CustomObject deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
ObjectCodec oc = p.getCodec();
JsonNode node = oc.readTree(p);
String customField = node.get("customField").asText();
return new CustomObject(customField);
}
}
위 코드에서 CustomObject
는 커스텀 역직렬화를 적용하고자 하는 객체를 나타낸다. deserialize
메서드 내에서 역직렬화를 수행하고, JsonParser
를 사용하여 필드를 읽거나 JSON을 객체로 변환하는 작업을 수행한다.
Jackson을 사용할 때 커스텀 직렬화와 역직렬화를 이용하여 JSON 데이터를 다룰 수 있다.
자세한 내용은 공식 Jackson 라이브러리 문서를 참고하면 도움이 될 것이다.