> Java > java지도 시간 > 맞춤형 JSON 직렬화를 위해 Jackson에서 사용자 정의 직렬 변환기를 생성하고 등록하는 방법은 무엇입니까?

맞춤형 JSON 직렬화를 위해 Jackson에서 사용자 정의 직렬 변환기를 생성하고 등록하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-26 01:11:10
원래의
990명이 탐색했습니다.

How to Create and Register Custom Serializers in Jackson for Tailored JSON Serialization?

Jackson에서 사용자 정의 직렬 변환기를 활용하는 방법

Jackson에서는 사용자 정의 직렬 변환기를 활용하면 특정 클래스에 대한 맞춤형 JSON 직렬화가 가능합니다.

사용자 정의 만들기 Serializer

Item 클래스에서 객체를 직렬화하려면 사용자 정의 직렬 변환기를 생성합니다.

public class ItemSerializer extends JsonSerializer<Item> {

    @Override
    public void serialize(Item value, JsonGenerator jgen,
                          SerializerProvider provider) throws IOException,
                                                             JsonProcessingException {
        jgen.writeStartObject();
        jgen.writeNumberField("id", value.id);
        jgen.writeNumberField("itemNr", value.itemNr);
        jgen.writeNumberField("createdBy", value.createdBy.id);
        jgen.writeEndObject();
    }
}
로그인 후 복사

사용자 정의 직렬 변환기 등록

생성 후 시리얼라이저에 등록해야 합니다. Jackson:

SimpleModule simpleModule = new SimpleModule("SimpleModule",
                                              new Version(1,0,0,null));
simpleModule.addSerializer(new ItemSerializer());
mapper.registerModule(simpleModule);
로그인 후 복사

Handling Type Registration

Jackson에서 누락된 유형 처리로 인해 오류가 발생합니다. 유형을 명시적으로 처리하여 이 문제를 해결하세요.

public class ItemSerializer extends JsonSerializer<Item> {

    @Override
    public void serialize(Item value, JsonGenerator jgen,
                          SerializerProvider provider) throws IOException,
                                                             JsonProcessingException {
        // ... (Serialization code)
    }

    @Override
    public Class<Item> handledType() {
        return Item.class;
    }
}
로그인 후 복사

Jackson으로 직렬화

사용자 정의 직렬 변환기를 등록한 상태에서 평소와 같이 Item 개체를 직렬화합니다.

StringWriter writer = new StringWriter();

try {
    mapper.writeValue(writer, myItem);
} catch (JsonGenerationException | JsonMappingException | IOException e) {
    e.printStackTrace();
}
로그인 후 복사

사용자 예시 직렬화

사용자 정의 직렬화 전략으로 사용자 개체를 직렬화하려면 유사한 직렬화 도구를 생성하고 이를 Jackson에 등록하세요.

사용자 정의 직렬화 도구는 개체의 JSON 표현을 제어하는 ​​데 유연성을 제공한다는 점을 기억하세요. , 특정 직렬화 요구 사항을 충족합니다.

위 내용은 맞춤형 JSON 직렬화를 위해 Jackson에서 사용자 정의 직렬 변환기를 생성하고 등록하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿