직렬화 및 역직렬화에만 필드를 사용하도록 Jackson 구성
Jackson의 기본 동작에는 속성(getter 및 setter)과 직렬화용 필드를 모두 사용하는 것이 포함됩니다. JSON으로의 역직렬화. 그러나 일부 사용자는 속성을 제외하고 직렬화 구성의 유일한 소스로 필드의 우선순위를 지정하는 것을 선호할 수 있습니다.
개별 클래스에 대한 주석 기반 접근 방식
이 동작을 적용하려면 클래스별로 @JsonAutoDetect 주석을 사용할 수 있습니다.
@JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
이 주석은 다음에서 속성을 제외합니다. 데이터 바인딩에 필드만 사용되도록 하는 Jackson의 배려.
모든 클래스에 대한 전역 구성
각 클래스에 수동으로 주석을 적용하는 대신 다음이 가능합니다. 모든 클래스에 대해 전역적으로 이 동작을 구성합니다. 이를 달성하려면 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));
이 구성은 기본 가시성 설정을 재정의하고 Jackson이 모든 클래스에서 직렬화 및 역직렬화에 필드만 사용하도록 지시합니다.
구성된 Mapper에 전역적으로 액세스
구성된 ObjectMapper에 전역적으로 액세스하려면, 래퍼 클래스를 사용할 수 있습니다.
public class MyGlobalMapper { private static final ObjectMapper MAPPER = new ObjectMapper(); static { MAPPER.setVisibility(MAPPER.getSerializationConfig().getDefaultVisibilityChecker() .withFieldVisibility(JsonAutoDetect.Visibility.ANY) .withGetterVisibility(JsonAutoDetect.Visibility.NONE) .withSetterVisibility(JsonAutoDetect.Visibility.NONE) .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)); } public static ObjectMapper get() { return MAPPER; } }
이 래퍼 클래스는 구성된 ObjectMapper를 검색하는 정적 메서드를 제공하므로 매번 다시 구성할 필요 없이 애플리케이션 전체에서 사용할 수 있습니다.
위 내용은 직렬화 및 역직렬화에 필드만 사용하도록 Jackson을 구성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!