Java 我无法将JSON转换为类<;T>;使用GSON
我正在我的项目中使用翻新库。该库使用Gson库从JSON转换数据。我有个问题。我需要转换泛型类Java 我无法将JSON转换为类<;T>;使用GSON,java,android,gson,retrofit,Java,Android,Gson,Retrofit,我正在我的项目中使用翻新库。该库使用Gson库从JSON转换数据。我有个问题。我需要转换泛型类 public class RestResponse<T> { private RestError error; private T response; public RestError getError() { return error; } public void setError(RestError error) {
public class RestResponse<T> {
private RestError error;
private T response;
public RestError getError() {
return error;
}
public void setError(RestError error) {
this.error = error;
}
public T getResponse() {
return response;
}
public void setResponse(T response) {
this.response = response;
}
public static class RestError {
private int code;
private String message;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
}
以及由此产生的错误:
03-02 14:43:43.781 23582-23582/com.skip.client.customer E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.skip.client.customer, PID: 23582
java.lang.NullPointerException
at com.skip.client.connector.UserApiConnector$3.success(UserApiConnector.java:67)
at com.skip.client.connector.UserApiConnector$3.success(UserApiConnector.java:63)
at retrofit.CallbackRunnable$1.run(CallbackRunnable.java:45)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5748)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(Native Method)
添加用户:
@Table(name = "Users")
public class User extends Model {
@Expose
@Column(name = "uuid")
@SerializedName("uuid")
private String uuid;
@Expose
@Column(name = "userInfo")
@SerializedName("userInfo")
private UserInfo userInfo;
@Expose
@Column(name = "balancedCustomer")
@SerializedName("balancedCustomer")
private BalancedCustomer balancedCustomer;
@Expose
@Column(name = "session")
@SerializedName("session")
private Session session;
@Expose
@Column(name = "accountTypeId")
@SerializedName("accountTypeId")
private Integer accountTypeId;
@Expose
@Column(name = "pushToken")
@SerializedName("pushToken")
private PushToken pushToken;
public User() {
super();
}
public UserInfo getUserInfo() {
return userInfo;
}
public Session getSession() {
return session;
}
public void setSession(Session session) {
this.session = session;
}
public void setUserInfo(UserInfo userInfo) {
this.userInfo = userInfo;
}
public PushToken getPushToken() {
return pushToken;
}
public void setPushToken(PushToken pushToken) {
this.pushToken = pushToken;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public String getUuid() {
return uuid;
}
public BalancedCustomer getBalancedCustomer() {
return balancedCustomer;
}
public void setBalancedCustomer(BalancedCustomer balancedCustomer) {
this.balancedCustomer = balancedCustomer;
}
public AccountType getAccountType() {
return AccountType.getById(accountTypeId);
}
public void setAccountType(AccountType accountTypeCode) {
this.accountTypeId = accountTypeCode.code();
}
}
如果您的响应成功,是否
restreponse.getError()
返回null
@Override
public void success(RestResponse<User> restResponse, Response response) {
//Log.d("132", "" + restResponse.getError().getCode());
}
@覆盖
public void成功(Response Response,Response Response){
//Log.d(“132”和“+response.getError().getCode());
}
从当前stacktrace来看,似乎不是Gson的问题,您可以添加用户类的详细信息吗?
{
"response": {
"id": 1,
"uuid": "nPUihPzHAqXLDn8EUj6",
"userInfo": {
"id": 1,
"email": "Test@gmail.com",
"firstName": "Jacob",
"lastName": "Dodson",
"facebookId": "139505288080"
},
"session": {
"id": 1,
"session": "aa4hnvVBFk1gLTqEsL7RJEYQ",
"expirationDate": 1425890619898
},
"pushToken": {
"id": 1,
"token": "APA91bHH-UzWYySOqUVK2PnIDBHqFDAzIKRH6s04sGSuc",
"platformCode": 1
}
}
}
03-02 14:43:43.781 23582-23582/com.skip.client.customer E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.skip.client.customer, PID: 23582
java.lang.NullPointerException
at com.skip.client.connector.UserApiConnector$3.success(UserApiConnector.java:67)
at com.skip.client.connector.UserApiConnector$3.success(UserApiConnector.java:63)
at retrofit.CallbackRunnable$1.run(CallbackRunnable.java:45)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5748)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(Native Method)
@Table(name = "Users")
public class User extends Model {
@Expose
@Column(name = "uuid")
@SerializedName("uuid")
private String uuid;
@Expose
@Column(name = "userInfo")
@SerializedName("userInfo")
private UserInfo userInfo;
@Expose
@Column(name = "balancedCustomer")
@SerializedName("balancedCustomer")
private BalancedCustomer balancedCustomer;
@Expose
@Column(name = "session")
@SerializedName("session")
private Session session;
@Expose
@Column(name = "accountTypeId")
@SerializedName("accountTypeId")
private Integer accountTypeId;
@Expose
@Column(name = "pushToken")
@SerializedName("pushToken")
private PushToken pushToken;
public User() {
super();
}
public UserInfo getUserInfo() {
return userInfo;
}
public Session getSession() {
return session;
}
public void setSession(Session session) {
this.session = session;
}
public void setUserInfo(UserInfo userInfo) {
this.userInfo = userInfo;
}
public PushToken getPushToken() {
return pushToken;
}
public void setPushToken(PushToken pushToken) {
this.pushToken = pushToken;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public String getUuid() {
return uuid;
}
public BalancedCustomer getBalancedCustomer() {
return balancedCustomer;
}
public void setBalancedCustomer(BalancedCustomer balancedCustomer) {
this.balancedCustomer = balancedCustomer;
}
public AccountType getAccountType() {
return AccountType.getById(accountTypeId);
}
public void setAccountType(AccountType accountTypeCode) {
this.accountTypeId = accountTypeCode.code();
}
}
@Override
public void success(RestResponse<User> restResponse, Response response) {
//Log.d("132", "" + restResponse.getError().getCode());
}