我使用Retrofit 2.我在http://ip.jsontest.com/上使用測試JSON。它非常簡單JSON。爲什麼我會接受這個錯誤?
在實際的項目中,我也有這個錯誤,但我想,這是因爲我有非常大的JSON。我用你的測試JSON。需要幫助))
java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
這是JSON
{ 「IP」: 「54.196.188.78」 }
我的接口
public interface UmoriliApi {
@GET(".")
Call<List<Test>> getData();
}
我的測試類
public class Test {
@SerializedName("ip")
@Expose
private String ip;
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
}
我的API類
public class App extends Application {
private static UmoriliApi umoriliApi;
private Retrofit retrofit;
@Override
public void onCreate() {
super.onCreate();
retrofit = new Retrofit.Builder()
.baseUrl("http://ip.jsontest.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
umoriliApi = retrofit.create(UmoriliApi.class);
}
public static UmoriliApi getApi() {
return umoriliApi;
}
}
我的MainActivity類別
public class MainActivity extends AppCompatActivity {
private static final String TAG = "TAG";
List<Test> posts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
posts = new ArrayList<>();
App.getApi().getData().enqueue(new Callback<List<Test>>() {
@Override
public void onResponse(Call<List<Test>> call, Response<List<Test>> response) {
posts.addAll(response.body());
Log.d(TAG, "onResponse: "+posts.size());
}
@Override
public void onFailure(Call<List<Test>> call, Throwable t) {
Log.d(TAG, "onFailure: ");
}
});
}
}
@GET(「。」) 調用 getData();修改此代碼 –
Akash
@Akash謝謝。但我怎麼能得到測試列表? posts.addAll(response.body()); –