Java 改装:使用jackson反序列化失败,没有任何错误
我使用以下代码调用RESTAPI:serviceJava 改装:使用jackson反序列化失败,没有任何错误,java,android,json,jackson,retrofit,Java,Android,Json,Jackson,Retrofit,我使用以下代码调用RESTAPI:service Retrofit client = Client.getClient(); Call<ResponseBeanOutput<UserBeanOutput>> call = client.create(AuthResource.class).login("username","password","true"); Response<ResponseBeanOutput<UserBeanOutput>>
Retrofit client = Client.getClient();
Call<ResponseBeanOutput<UserBeanOutput>> call = client.create(AuthResource.class).login("username","password","true");
Response<ResponseBeanOutput<UserBeanOutput>> response = call.execute();
服务器以JSON格式发送响应,如下所示:
{
"error": false,
"message": "Successfull login",
"errorCode": 0,
"data": {
"uid": 7,
"email": "user@example.com",
"name": "username",
"nick": "usernick",
"photoUrl": "media/profiles/defaultImageProfile.png",
"lts": "aaaaeqc9lf9od82rk633aaaaa"
}
}
我必须将此响应映射到一个通用对象ResponseBeanOutput,其中包含一个UserBeanOutput类型的字段(数据)(映射json对象中的对象“数据”)。因此,在最终响应中,eBeanOutput将映射字段“error”、“message”、“errorCode”,数据将是一个类型为“UserBeanOutput”的对象,其中包含“uid”、“email”、“nick”等
我的问题是所有对象都是空的(null),并且我没有错误
我还尝试从ResponseBeanOutput中删除泛型类型,并将带有字段“error”和“message”的简单bean映射到具有相关getter和setter的响应,但没有成功
我做错了什么?根据@Yevhenii Semenov的建议,调试execute()方法,我解决了这个问题。我发现问题出在响应中没有返回body的API中,因此反序列化为null。 初始化客户端的代码很好
谢谢根据@Yevhenii Semenov的建议,调试execute()方法,我解决了这个问题。我发现问题出在响应中没有返回body的API中,因此反序列化为null。 初始化客户端的代码很好
谢谢您是否尝试调试改装?在大多数情况下,当我不明白为什么第三方图书馆不能像我期望的那样工作时,它对我来说是有效的。只要在.execute()方法的开头放一个断点,你就会一步一步地找到原因。你试过调试改型吗?在大多数情况下,当我不明白为什么第三方图书馆不能像我期望的那样工作时,它对我来说是有效的。只需在.execute()方法的开头放置一个断点,然后逐步找到原因。
{
"error": false,
"message": "Successfull login",
"errorCode": 0,
"data": {
"uid": 7,
"email": "user@example.com",
"name": "username",
"nick": "usernick",
"photoUrl": "media/profiles/defaultImageProfile.png",
"lts": "aaaaeqc9lf9od82rk633aaaaa"
}
}