2016-12-29 2 views
0

Ich habe eine Frage zu Jackson Deserialisierung Unterklasse, zum Beispiel wir eine übergeordnete Klasse foo und Unterklasse bar haben:Jackson Deserialisierung mit optionalen Parametern

@JsonTypeInfo(use = JsonTypeInfo.Id.Name, include = JsonTypeInfo.As.PROPERTY, 
property = "bar", visible = true) 
@JsonSubTypes({ 
    @Type(value = Foo.class, bar = ""), 
    @Type(value = Bar.class, bar = "true") 
}) 
public class Foo{ String value; } 

public class Bar extends Foo { boolean bar; } 

Unterklasse kommt im JSON-Format als:

{ 
"value": "this is some value for bar class", 
"bar": "true" 
} 

aber ich brauche auch jackson, um foo-Klasse zu deserialisieren, und es sollte durch diesen booleschen Wert in der Kindklasse identifizieren. Weil Anfrage könnte kommen als

{ "value": "this is some foo class value" } 

Antwort

0

Ich hoffe, dass das für jemanden nützlich sein wird.

@JsonTypeInfo(
     use = JsonTypeInfo.Id.Name, 
     // this will ignore boolean bar value in the parent 
     include = JsonTypeInfo.As.EXISTING_PROPERTY, 
     property = "bar", 
     // this will make a default implementation 
     defaultImpl = Foo.class) 
    @JsonSubTypes({@Type(value = Bar.class, name = "true") }) 
    public class Foo{ String value; } 

    public class Bar extends Foo { boolean bar; } 
Verwandte Themen