So rufen Sie den Standard-Deserialisierer von einem benutzerdefinierten Deserialisierer in Jackson auf
Beim Anpassen der Deserialisierung in Jackson müssen Sie möglicherweise auf den Standard zugreifen Deserialisierer, um Ihr Objekt zu füllen. Dies kann erreicht werden, indem ein BeanDeserializerModifier verwendet und über ein SimpleModule registriert wird.
Hier ist eine Beispielimplementierung:
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); } }
Indem Sie dies registrieren Mit dem Modifikator können Sie auf den Standard-Deserialisierer zugreifen und Ihr Objekt in Ihrem benutzerdefinierten Modus vorab auffüllen Deserialisierer, ohne eine Ausnahme auszulösen.
Das obige ist der detaillierte Inhalt vonWie kann man Jacksons Standard-Deserializer in einem benutzerdefinierten Deserializer nutzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!