2016-05-16 12 views
0

Ich versuche json so deserialisieren:Inner statisches Objekt Deserialisierung mit Jackson

{ "User.getToken": { "Code": "200", "Token": "0155649ce3ea4be98da9fc29376d8688", "user_name": "Andruw137" "user_avatar": "https://text.com/images/avatar/_/81546.png" } }

mit diesen Codezeilen:

ObjectMapper mapper = new ObjectMapper(); 

TokenRequest tokenRequest = mapper.readValue(String.valueOf(response), TokenRequest.class); 

und diese:

public class TokenRequest { 

@JsonProperty("User.getToken") 
public User user = new User(); 

public User getUser() { 
    return user; 
} 

public void setUser(User user) { 
    this.User = user; 
} 

static class User { 
    int code; 
    String token; 
    String user_name; 
    String user_avatar; 

    public int getCode() { 
     return code; 
    } 

    public String getToken() { 
     return token; 
    } 

    public String getUser_name() { 
     return user_name; 
    } 

    public String getUser_avatar() { 
     return user_avatar; 
    } 

    public void setCode(int code) { 
     this.code = code; 
    } 

    public void setToken(String token) { 
     this.token = token; 
    } 

    public void setUser_name(String user_name) { 
     this.user_name = user_name; 
    } 

    public void setUser_avatar(String user_avatar) { 
     this.user_avatar = user_avatar; 
    } 
} 

}

Ich las Dokumentation habe aber noch immer Fehler:

com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate value of type [simple type, class ru.amdm.amdm.authorization.TokenRequest] from Integral number (404); no single-int-arg constructor/factory method 
                   at [Source: 404 .1; line: 1, column: 1] 

Ich mag würde verstehen, was die Fehlermeldung bedeutet, und wie tatsächlich bekommen solche JSER deserialisiert. Vielen Dank im Voraus für jede Hilfe.

+0

'statische inner' s einen Widerspruch. – EJP

+0

@EJP aus Neugier, wie würdest du eine innere Klasse nennen, die als statisch deklariert wird? –

Antwort

2

Sie versuchen, eine Zeichenfolge "code": "200" in eine ganze Zahl zu deserialisieren. Dies funktioniert, wenn Sie die Anführungszeichen entfernen: "code": 200.

bitte auch @JsonProperty ("json_name") Anmerkung zu den Objektfelder hinzufügen und benennen Sie diese Standard-Kamel Fall mit:

@JsonProperty("user_avatar") String userAvatar;

+1

Oder ändern Sie 'code' in' User' für einen String. –

+0

Genau das, was Jean-François erwähnt, aber ich glaube, es ist besser, früh zu versagen und starkes Tippen durchzusetzen. –

Verwandte Themen