【发布时间】:2018-03-19 04:50:42
【问题描述】:
是改造代码
Retrofit builder = new Retrofit.Builder()
.baseUrl(APIUrl.API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
RestAPI restAPI = builder.create(RestAPI.class);
Call<JsonObject> call = restAPI.wiseSaying();
call.enqueue(new Callback<JsonObject>() {
@Override
public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
Log.d("response----", response.body().toString());
JsonArray jsonArray = response.body().getAsJsonArray();
}
@Override
public void onFailure(Call<JsonObject> call, Throwable t) {
}
});
{"phrase":"[{\"author\":\"abc\",\"say\":\"aaaaa\"},
{\"author\":\"def\",\"say\":\"sdffdf.\"},
{\"author\":\"gsdf\",\"say\":\"dsfdsfdsf.\"}]"}
这是响应。(日志结果)我认为是 JsonArray 但是错误ㅠ_ㅠ
FATAL EXCEPTION: main
Process: com.dsm.wakeheart, PID: 28267
java.lang.IllegalStateException: This is not a JSON Array.
at com.google.gson.JsonElement.getAsJsonArray(JsonElement.java:106)
at com.dsm.wakeheart.Fragment.WiseSayingFragment$1.onResponse(WiseSayingFragment.java:82)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
我使用的是 jsonprimitive 而不是 jsonarray,所以我没有收到错误。为什么?
【问题讨论】: