java – Retrofit返回null值
发布时间:2020-12-15 04:31:52 所属栏目:Java 来源:网络整理
导读:我正在使用Retrofit,而且我在 Android中非常棒. 我的JSON响应 { "movie": { "_id": "568661682d33bca267fdf81b","poster_path": "https://image.tmdb.org/t/p/w154/xHfhQIK4BNlsGv5Ylx8mVq0hJT1.jpg","adult": false,"overview": "","release_date": "2015-0
我正在使用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","genre_ids": [ 53,12 ] } 如果您无法改变服务器的响应,可以通过几种方法在客户端处理它.我只是创建另一个对象来映射到外部JSON对象,因此将现有的Movie类保留为原样,添加: public class MovieResponse { public Movie movie; } 然后更改Retrofit调用以使用MovieResponse而不是Movie. movieResponse.movie (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |