2016-06-20 7 views
0

Ich brauche meine Klassen in dieses Format serialisiert werden an den Server auf einer POST-Anforderung gesendet werden soll wird dort missgebildet. Hier ist die Antwort vom Server:GSon Serialisierung entgeht meinen Schlüsseln, warum? da die JSON</p> <pre><code>{ "user": { "id": "myId", "token": "myToken" } } </code></pre> <p>aber wenn ich inspizieren des Servers Ergebnis der Gson Bibliothek hält Flucht die Schlüssel und der Server ausfällt:

Parameters: {"user"=>"{\"id\":\"myId\",\"token\":\"myToken\"}"} 

Und hier ist, wie ich den Code bin Serialisierung:

public class UserTest { 
    @SerializedName("user") 
    public UserDataTest user; 
} 

public class UserDataTest { 

    UserDataTest(){}; 

    @SerializedName("id") 
    public String id; 

    @SerializedName("token") 
    public String token; 
} 

und teste ich es wie folgt aus:

UserTest newUser = new UserTest(); 
UserDataTest tmp = new UserDataTest(); 
tmp.id = "myId"; 
tmp.token = "myToken"; 
newUser.user = tmp; 
Gson gson = new Gson(); 
String json = gson.toJson(newUser); 
JSONObject params = new JSONObject(); 
params.put("user", json); 

// now I do a POST to the server 

jemand vor Ort können die Problem? Danke!

+0

Vielleicht ist die cl ass muss serializable implementieren? Öffentliche Klasse UserTest implementiert Serializable { – RicardoVallejo

+0

nein ist nicht, die Seralisierung ist nicht korrekt ... –

Antwort

0

Ändern Sie die POJO Klassen und passen Sie diese an:

beachten Sie, dass, wenn das Attribut der Objekte den gleichen Namen wie der json-Schlüssel haben, dann können Sie die @SerializedName("id") weglassen, wird, da dies durch genommen werden Gson standardmäßig ...

class UserDataTest { 
    public String id; 
    public String token; 
    public UserDataTest(String id, String token) { 
    this.id = id; 
    this.token = token; 
    } 
} 

class UserTest { 
    public UserDataTest user; 
    public UserTest(UserDataTest userDataTest) { 
    this.user = userDataTest; 
    } 
} 

Test:

public static void main(String[] args) { 
     UserTest newUser = new UserTest(new UserDataTest("myId", "myToken")); 
     Gson gson = new Gson(); 
     String json = gson.toJson(newUser); 
     System.out.println(json); 
    }