>Java >java지도 시간 >전역적으로 직렬화 및 역직렬화에 필드만 사용하도록 Jackson을 구성하려면 어떻게 해야 합니까?

전역적으로 직렬화 및 역직렬화에 필드만 사용하도록 Jackson을 구성하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-24 05:56:10165검색

How Can I Configure Jackson to Use Only Fields for Serialization and Deserialization Globally?

필드만 사용하도록 Jackson 구성: 전역 접근 방식

Jackson의 기본 동작에는 직렬화를 위해 속성(getter/setter)과 필드를 모두 사용하는 것이 포함됩니다. 그리고 역직렬화. 그러나 필드를 직렬화 구성의 소스로만 사용하고 싶을 수도 있습니다.

개별 클래스 주석

이를 달성하기 위해 각 개별 클래스에 다음 주석을 적용할 수 있습니다. :

@JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)

단, 이 방법을 사용하려면 모든 클래스에 반복적인 주석을 달아야 합니다. 번거롭습니다.

전역 구성

이 동작을 전역적으로 구성하려면 개별 ObjectMapper를 다음과 같이 수정하십시오.

ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(mapper.getSerializationConfig().getDefaultVisibilityChecker()
                .withFieldVisibility(JsonAutoDetect.Visibility.ANY)
                .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withSetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withCreatorVisibility(JsonAutoDetect.Visibility.NONE));

래퍼를 통한 전역 액세스 클래스

구성된 매퍼에 전역적으로 액세스하려면 다음을 고려하세요. 래퍼 클래스 구현:

매퍼를 클래스/함수로 래핑하여 필요에 따라 전역적으로 노출합니다.

public class JsonMapperWrapper {
    private static final ObjectMapper mapper = <configure ObjectMapper as above>;

    public static ObjectMapper getMapper() {
        return mapper;
    }
}

이 접근 방식을 사용하면 JsonMapperWrapper.getMapper( ).

위 내용은 전역적으로 직렬화 및 역직렬화에 필드만 사용하도록 Jackson을 구성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.