2016-04-18 12 views
2

Ist es möglich, Objekte mit Jackson zu serialisieren, aber benutzerdefinierte Serializer zu ignorieren, die mit Annotation @JsonSerialize(using = MyCustomSerializer.class) registriert sind?Kann @ JsonSerialize-Annotation ignoriert werden?

Begründung: Ich möchte Jackson verwenden, um mein Objekt in Map zu konvertieren, mit com.fasterxml.jackson.databind.ObjectMapper.convertValue(object,Map.class). Momentan funktioniert es nicht, weil meine Klasse einen benutzerdefinierten Serializer (@JsonSerialize) hat, aber Deserializer nicht enthält. Ich benötige einen benutzerdefinierten Serializer, und ich möchte keinen Deserializer schreiben.

ObjectMapper.convertValue verwendet meine Serialisierung dann fehlschlägt bei Deserialisierung.

Ich möchte ObjectMapper haben, die nur @ JsonSerialize ignorieren und Standard Serialisierungslogik verwenden. Ist das mit Jackson möglich?

Antwort

2

Das ist durchaus möglich. Sie könnten Anmerkungen auf einer Basis, wie dies pro ObjectMapper deaktivieren:

ObjectMapper mapper = new ObjectMapper(); 
mapper.disable(MapperFeature.USE_ANNOTATIONS); 

Weitere Informationen in der Dokumentation unter github überprüfen oder die Beispiele am baeldung überprüfen.

+0

gibt es einen anderen Weg, da diese Lösung alle Anmerkungen deaktiviert. –

1

Sie können auch eine spezifische Annoation deaktivieren, indem Sie ignoreJsonTypeInfoIntrospector verwenden und null für die Klasse spsific annoation zurückgeben.

werfen Sie einen Blick auf die letzten github issue

public class IgnoreJsonUnwrappedAnnotationInspector extends JacksonAnnotationIntrospector { 
    @Override 
    public NameTransformer findUnwrappingNameTransformer(AnnotatedMember member) { 
    return null; 
    } 
} 

auch hier für einen Blick mehr detailed example

eine andere Lösung mehr ObjectMapper Instanzen für die verschiedenen Szenarien zu erstellen.

Verwandte Themen