2016-06-20 2 views
0

мне нужно сериализовать мои занятия в этот формат для отправки на сервер запроса на POST:Секуляция GSon, ускользающая от моих ключей, почему?

{ 
    "user": { 
    "id": "myId", 
    "token": "myToken" 
    } 
} 

, но когда я проверять результат сервера библиотека GSOn хранит спасаясь ключи и сервер не с JSON попадает туда неправильно. Вот ответ от сервера:

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

А вот как я сериализации код:

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

public class UserDataTest { 

    UserDataTest(){}; 

    @SerializedName("id") 
    public String id; 

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

и я тестирую его так:

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 

Может кто-нибудь пятно вопрос? спасибо!

+0

Может быть сл осла должна внедрить сериализуемую? public class UserTest реализует Serializable { – RicardoVallejo

+0

нет, нет, серализация неправильная ... –

ответ

0

Изменить POJO классы и адаптировать его к этому:

отметить, что если атрибут объектов имеют такое же имя, что и JSON-ключ, то вы можете опустить @SerializedName("id"), так как это будет принято Gson по умолчанию ...

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; 
    } 
} 

Тест:

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); 
    } 
Смежные вопросы