Jackson에서 기본 동작을 사용한 사용자 정의 역직렬화
Jackson에서 사용자 정의 역직렬 변환기를 구현할 때 기본 역직렬 변환기를 활용하여 사전에 사용자 지정 논리를 적용하기 전에 개체를 채웁니다. 이 기사에서는 사용자 정의 역직렬 변환기에서 기본 역직렬 변환기에 액세스하는 문제를 다룹니다.
이를 달성하려면 BeanDeserializerModifier를 생성하고 SimpleModule을 사용하여 등록하세요. 예는 다음과 같습니다.
public class UserEventDeserializer extends StdDeserializer<User> implements ResolvableDeserializer { private static final long serialVersionUID = 7923585097068641765L; 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 JsonParseException, JsonMappingException, IOException { 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); } }
이 예에서는
이 모듈을 사용자 정의 역직렬화 로직인 ObjectMapper를 사용하는 동시에 다른 클래스의 기본 동작을 활용할 수 있습니다.
위 내용은 사용자 정의 Jackson Deserializer 내에서 기본 역직렬화 동작을 어떻게 활용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!