


Wie kann man Jacksons Standard-Deserializer in einem benutzerdefinierten Deserializer nutzen?
Dec 10, 2024 am 09:16 AMSo 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!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?

Node.js 20: wichtige Leistungssteigerung und neue Funktionen

Wie kann ich funktionale Programmierungstechniken in Java implementieren?

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Problem behoben

Datenpipelines mit Apache Kafka im Jahr 2025 revolutionieren
