【发布时间】:2019-12-17 17:55:12
【问题描述】:
我让request 使用 Retrofit 2 从 Flickr 获取照片。
我创建了一个类来解析它:
public class FlickrResult {
@SerializedName("photos")
@Expose
private FlickrPhotos photos;
@SerializedName("stat")
@Expose
private String stat;
public FlickrPhotos getPhotos() {
return photos;
}
public class FlickrPhotos {
@SerializedName("page")
@Expose
private int page;
@SerializedName("pages")
@Expose
private String pages;
@SerializedName("perpage")
@Expose
private int perpage;
@SerializedName("total")
@Expose
private String total;
@SerializedName("photo")
@Expose
private ArrayList<FlickrPhoto> photo;
public ArrayList<FlickrPhoto> getPhoto() {
return photo;
}
public class FlickrPhoto {
@SerializedName("id")
@Expose
private String id;
@SerializedName("owner")
@Expose
private String owner;
@SerializedName("secret")
@Expose
private String secret;
@SerializedName("server")
@Expose
private String server;
@SerializedName("farm")
@Expose
private int farm;
@SerializedName("title")
@Expose
private String title;
@SerializedName("ispublic")
@Expose
private int ispublic;
@SerializedName("isfriend")
@Expose
private int isfriend;
@SerializedName("isfamily")
@Expose
private int isfamily;
public String getTitle() {
return title;
}
}
}
}
我的构建请求是:
static {
gson = new GsonBuilder()
.setLenient()
.create();
}
@NonNull
private static Retrofit buildRetrofit() {
Log.i(TAG, "onBuildRetrofitApiFactory");
return new Retrofit.Builder()
.baseUrl("https://api.flickr.com/services/")
.client(getClient())
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
}
改造界面
@GET("rest")
Call<FlickrResult> getPhotos(@Query("method") String method,
@Query("api_key") String key,
@Query("format") String format,
@Query ("nojsoncallbac") String nojsoncallbac
);
我负责的是成功,但是解析有问题。有例外:
java.lang.IllegalStateException: 应为 BEGIN_OBJECT,但在第 1 行第 1 列路径 $
请大家帮忙,我需要你的帮助!
【问题讨论】:
-
闪烁的api响应是什么?如果响应结构因响应代码而异,那么您可能会遇到问题。你的改造界面是什么?
-
@Robert Estivill 不,我有相同的回应,如api.flickr.com/services/rest/…
-
你的改造界面是什么?
-
@GET("rest") 调用
getPhotos(@Query("method") 字符串方法,@Query("api_key") 字符串键,@Query("format") 字符串格式, @Query ("nojsoncallbac") 字符串 nojsoncallbac ); -
可能不相关,但 FlickrPhotos.pages 和 FlickrPhotos.total 都是整数而不是字符串
标签: java android json retrofit2