私のアプリはRetrofit
とGson
を使用してAPIを使用しようとしています。期待通りBEGIN_ARRAYでしたが、GsonとRetrofitでBEGIN_OBJECTでした
私の要求がhttps://nahuatiliztli.herokuapp.com/laws.json
にあり、それは戻る:
[{"id":1,"title":"Constitución Política de los Estados Unidos Mexicanos","url":"http://www.diputados.gob.mx/LeyesBiblio/pdf/1_29ene16.pdf","created_at":"2016-07-10T02:36:00.641Z","updated_at":"2016-07-10T02:36:00.641Z"}]
私のコードが続くように構成されて...
私のモデルはLaw
クラスです:
public class Law {
@SerializedName("id")
private Integer mId;
@SerializedName("title")
private String mTitle;
@SerializedName("url")
private String mUrl;
public Law(Integer id, String title, String url) {
mId = id;
mTitle = title;
mUrl = url;
}
public Integer getId() {
return mId;
}
public void setId(Integer id) {
mId = id;
}
public String getTitle() {
return mTitle;
}
public void setTitle(String title) {
mTitle = title;
}
public String getUrl() {
return mUrl;
}
public void setUrl(String url) {
mUrl = url;
}
}
私の応答の抽象化が01ですクラス:
public class LawsResponse {
private List<Law> mLaws;
public List<Law> getLaws() {
return mLaws;
}
public void setLaws(List<Law> laws) {
mLaws = laws;
}
}
Law
モデルのための私のサービス・インターフェースは、次のとおりです。
public interface LawsService {
@GET("https://nahuatiliztli.herokuapp.com/laws.json")
Call<LawsResponse> listLaws();
}
私のアダプタはLawsApiAdapter
です:
public class LawsApiAdapter {
private static LawsService API_SERVICE;
public static LawsService getInstance() {
if (API_SERVICE==null) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constants.BASE_URL)
.addConverterFactory(GsonConverterFactory.create(buildLawsApiGsonConverter()))
.build();
API_SERVICE = retrofit.create(LawsService.class);
}
return API_SERVICE;
}
private static Gson buildLawsApiGsonConverter() {
return new GsonBuilder()
.registerTypeAdapter(
LawsApiAdapter.class,
new LawsDeserializer())
.create();
}
}
私はこのサイトに掲載多くの提案を試みたが、それはまだ、このエラーを投げる:
java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $
私は、Jsonが期待している多くの投稿を読んで理解していますオブジェクトであり、実際には私が望むようなJson配列を受け取っていますが、それを動作させる方法はまだありません。