я называю сеть запроса на мой сервер, и сервер всегда Ответные формат JSON выглядеть этот формат ниже:Gson не может бросить объект
{
"error": 200,
"message": "Login Success",
"message_app": "abcxyz",
"data": {
"client_id": "1423423",
"client_secret": "64646456546"
}
}
Только JSONObject данные это включает в себя различные поля для каждого вида запроса. Пример для нового ответа:
{
"error": 200,
"message": "Get product success",
"message_app": "vcxvxcv",
"data": {
"product_title": "Product A",
"product_desc": "This is a description for product A"
}
}
Так что я решил сделать общий вызов класса ServerResult включает в поле «Объект», так что я могу привести его к конкретному объекту.
// ServerResult.class
public class ServerResult {
private int error;
private String message;
private String message_app;
private Object data;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getMessageApp() {
return message_app;
}
public void setMessageApp(String messageApp) {
this.message_app = messageApp;
}
public int getError() {
return error;
}
public void setError(int error) {
this.error = error;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public String getMessage_app() {
return message_app;
}
public void setMessage_app(String message_app) {
this.message_app = message_app;
}
}
//Client.java
public class Client {
private String client_id;
private String client_secret;
public String getClientId() {
return client_id;
}
public void setClientId(String client_id) {
this.client_id = client_id;
}
public String getClientSecret() {
return client_secret;
}
public void setClientSecret(String client_secret) {
this.client_secret = client_secret;
}
}
После запроса завершения преобразовать JSON в объект ServerResult по GSON:
@Override
public void onResponse(String response) {
Gson gson = new Gson();
ServerResult serverResult = gson.fromJson(response, ServerResult.class); //convert json String to ServerResult object
}
И затем передать объект Data объекту клиента
Client client = (Client)serverResult.getData(); // problem here
ошибка входа в GSON:
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap не может быть приведен к mypackagename.Client
ли проблема с RELATE GSON ?
есть метод GetData() в ваших ServerResults? – Jois
@Jois: Да, конечно. – CauCuKien
Не могли бы вы высказать свой полный серверный результат? – Jois