2017-06-22 2 views
1

Ich rufe eine API und als Ergebnis kann ich JSON Antwort bekommen. In diesem json habe ich einen Parameter z.B.manufacturer, in dem ich erwarte ein Objekt vom Typ Manufacturer (meine benutzerdefinierte Klasse) haben, aber einige Zeit, die ich String aus demselben benannten Parameter in die API bin immer aufgrund dieser, ich bin folgende Ausnahme zu erhalten Lage:Android Jackson Mapping Ausnahme

com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate value of type [simple type, class com.response.Manufacturer] from String value ('59438a9f2e4ab8c26656fcfd'); no single-String constructor/factory. 

Api Antwort, die ich erhalte ist wie:

{"manufacturer" : "59438a9f2e4ab8c26656fcfd"} 

und irgendwann diese Reaktion kommen wie

{"manufacturer" : {"name":"Manufacturer Name"}} 

Meine Hersteller-Klasse ist wie

class Manufacturer { 
@JsonProperty("name") 
private String name; 
    // getter and setter for this with @JsonProperty("name"); 
} 

ich für diesen über Google viel gesucht und in der Lage keine Lösung zu finden. Bitte hilf mir dabei.

Antwort

0

Sie einen Konstruktor mit einem String Argumente setzen kann in Manufacturer, dass Jackson verwenden wird, wenn es ein String-Feld in JSON sieht und hat Manufacturer Feld in der Java-Klasse zu erstellen:

class Manufacturer { 
    Manufacturer(String id) { 
     this.name = // initialize as you see fit 
    } 

    Manufacturer() {} // compiler no longer creates this 
Verwandte Themen