> Java > java지도 시간 > 사용자 정의 디시리얼라이저 내에서 Jackson의 기본 디시리얼라이저를 활용하는 방법은 무엇입니까?

사용자 정의 디시리얼라이저 내에서 Jackson의 기본 디시리얼라이저를 활용하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-10 09:16:12
원래의
912명이 탐색했습니다.

How to Leverage Jackson's Default Deserializer within a Custom Deserializer?

Jackson의 사용자 정의 Deserializer에서 기본 Deserializer를 호출하는 방법

Jackson에서 deserialization을 사용자 정의할 때 기본 Deserializer에 액세스해야 할 수도 있습니다. 개체를 채우는 디시리얼라이저. 이는 BeanDeserializerModifier를 사용하고 SimpleModule을 통해 등록하면 달성할 수 있습니다.

다음은 구현 예입니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

public class UserEventDeserializer extends StdDeserializer<User> implements ResolvableDeserializer {

 

  private final JsonDeserializer<?> defaultDeserializer;

 

  public UserEventDeserializer(JsonDeserializer<?> defaultDeserializer) {

    super(User.class);

    this.defaultDeserializer = defaultDeserializer;

  }

 

  @Override

  public User deserialize(JsonParser jp, DeserializationContext ctxt)

      throws IOException, JsonProcessingException {

    User deserializedUser = (User) defaultDeserializer.deserialize(jp, ctxt);

 

    // Special logic

 

    return deserializedUser;

  }

 

  @Override

  public void resolve(DeserializationContext ctxt) throws JsonMappingException {

    ((ResolvableDeserializer) defaultDeserializer).resolve(ctxt);

  }

 

  public static void main(String[] args) throws Exception {

    SimpleModule module = new SimpleModule();

    module.setDeserializerModifier(new BeanDeserializerModifier() {

      @Override

      public JsonDeserializer<?> modifyDeserializer(DeserializationConfig config, BeanDescription beanDesc,

          JsonDeserializer<?> deserializer) {

        if (beanDesc.getBeanClass() == User.class)

          return new UserEventDeserializer(deserializer);

        return deserializer;

      }

    });

 

    ObjectMapper mapper = new ObjectMapper();

    mapper.registerModule(module);

    User user = mapper.readValue(new File("test.json"), User.class);

  }

}

로그인 후 복사

이를 등록하여 수정자를 사용하면 기본 역직렬 변환기에 액세스하고 예외를 발생시키지 않는 사용자 정의 디시리얼라이저.

위 내용은 사용자 정의 디시리얼라이저 내에서 Jackson의 기본 디시리얼라이저를 활용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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