2017-07-21 2 views
0

ich die JsonTypeInfo verwendet richtigkann nicht über Jackson auf Deserialisierung von polymorphen Typ JSON von Jersey verarbeiten

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type") 
public abstract class Car { 

} 

public class Audi extends Car { 
    // Getters and Setters 
} 

public class Merc extends Car { 
    // Getters and Setters 
} 

Für die folgende Struktur der json zu entsprechenden Untertypen deserialisieren - Map<String, Car> info

Hier ist mein JSON Probe

{ 
    info: { 
     "xyz": { 
     type: "Audi" 
     }, 
     "abc": { 
     type: "Merc" 
     } 
    } 
} 

die obige JSON deserialisieren nicht richtig und erhält den Fehler 400: nicht imstande, JSON zu verarbeiten. Was fehlt mir hier?

+0

möglich "Duplikat" von https://stackoverflow.com/questions/8565299/polymorphism-in-json-jersey-and-jackson?rq=1 – Nico

Antwort

0

Zwei Dinge, die JSON falsch, da die Eigenschaften zwischen Anführungszeichen sein muss:

{ 
    "info": { 
     "xyz": { 
     "type": "Audi" 
     }, 
     "abc": { 
     "type": "Merc" 
     } 
    } 
} 

Und die zweite, versuchen Sie diese Anmerkung zu der abstrakten Klasse hinzuzufügen:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type") 
@JsonSubTypes({ 
    @JsonSubTypes.Type(value = Audi.class, name = "Audi"), 
    @JsonSubTypes.Type(value = Merc.class, name = "Merc")}) 
abstract class Car { 

Es besteht im Wesentlichen zeigt die Subtypen und die zugehörigen Namen an.

Verwandte Themen