Jackson의 사용자 정의 Deserializer에서 기본 Deserializer를 호출하는 방법
Jackson에서 deserialization을 사용자 정의할 때 기본 Deserializer에 액세스해야 할 수도 있습니다. 개체를 채우는 디시리얼라이저. 이는 BeanDeserializerModifier를 사용하고 SimpleModule을 통해 등록하면 달성할 수 있습니다.
다음은 구현 예입니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!