java – Retrofit返回null值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Retrofit返回null值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2137字,纯文字阅读大概需要4分钟。
内容图文
![java – Retrofit返回null值](/upload/InfoBanner/zyjiaocheng/746/1acb7aa7407041a6898a91499d1bcb84.jpg)
我正在使用Retrofit,而且我在Android中非常棒.
我的JSON响应
{
"movie": {
"_id": "568661682d33bca267fdf81b",
"poster_path": "https://image.tmdb.org/t/p/w154/xHfhQIK4BNlsGv5Ylx8mVq0hJT1.jpg",
"adult": false,
"overview": "",
"release_date": "2015-05-15",
"id": 76341,
"original_title": "Mad Max: Fury Road",
"original_language": "en",
"title": "Mad Max: Furia en la carretera",
"vote_count": 3105,
"__v": 0,
"popular": true,
"production_companies": [],
"cast": [],
"genre_ids": [
53,
28,
12
]
}
}
这是我的电影模型:
public class Movie {
public String Id;
//more variables
public String getId() {
return Id;
}
public void setId(String id) {
Id = id;
}
//more getter and setter
我的Retrofit界面
public interface MyApiEndPointsInterface {
@GET("/movie/{id}")
Call<Movie> getMovie(@Path("id") int id);
}
和活动中的代码
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
MyApiEndPointsInterface apiService =
retrofit.create(MyApiEndPointsInterface.class);
Call<Movie> call = apiService.getMovie(76341);
call.enqueue(new Callback<Movie>() {
@Override
public void onResponse(Response<Movie> response, Retrofit retrofit) {
Log.d("MainActivity", response.body().title);
}
@Override
public void onFailure(Throwable t) {
}
});
我认为它可以是JSON响应,因为它有一个优秀的实例,但我不知道如何在代码中使用它.
我没有得到回复,这一切都正确吗?
解决方法:
问题是JSON解析器不期望在JSON中包装“movie”数据的未命名根对象.
如果您可以更改服务器返回的JSON,请删除外部对象,以便您拥有
{
"_id": "568661682d33bca267fdf81b",
"poster_path": "https://image.tmdb.org/t/p/w154/xHfhQIK4BNlsGv5Ylx8mVq0hJT1.jpg",
"adult": false,
"overview": "",
"release_date": "2015-05-15",
"id": 76341,
"original_title": "Mad Max: Fury Road",
"original_language": "en",
"title": "Mad Max: Furia en la carretera",
"vote_count": 3105,
"__v": 0,
"popular": true,
"production_companies": [],
"cast": [],
"genre_ids": [
53,
28,
12
]
}
如果您无法改变服务器的响应,可以通过几种方法在客户端处理它.我只是创建另一个对象来映射到外部JSON对象,因此将现有的Movie类保留为原样,添加:
public class MovieResponse {
public Movie movie;
}
然后更改Retrofit调用以使用MovieResponse而不是Movie.
然后你可以参考
movieResponse.movie
内容总结
以上是互联网集市为您收集整理的java – Retrofit返回null值全部内容,希望文章能够帮你解决java – Retrofit返回null值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。