首页 > 解决方案 > 如何解决?org.json.JSONException:响应无法解析为 JSON 数据

问题描述

03-27 11:59:09.438 4577-4577/com.example.mealitup W/JsonHttpRH: onFailure(int, Header[], String, Throwable) 未被覆盖,但收到回调 org.json.JSONException: 无法响应在 com.loopj.android.http.JsonHttpResponseHandler$1$1.run(JsonHttpResponseHandler.java:158) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler .java:95) 在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5305) 在 java.lang.reflect.Method.invoke(Native Method) 在java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 在 com.android.internal.os.ZygoteInit.main(合子初始化。爪哇:698)

标签: androidjson

解决方案


使用改造

1.创建界面

import java.util.List;
import retrofit2.Call;
import retrofit2.http.GET;
public interface RequestInterface {

    @GET(Constants.JSON)
    Call<List<MyModel>> getJSON();
}

2.调用该函数并传递URL获取JSON

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl( "www.myJSONexample.com")
            .client(new OkHttpClient())
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    RequestInterface request = retrofit.create(RequestInterface.class);
    Call<List<MyModel>> call = request.getJSON();

    call.enqueue(new Callback<List<Recipe>>() {
        @Override
        public void onResponse(@NonNull Call<List<MyModel>> call, @NonNull 
   Response<List<MyModel>> response) {
            List<MyModel> jsonResponse = response.body();
            String str = jsonResponse.get( 0 );
            String str2 = jsonResponse.get( 1 );
   }
        @Override
        public void onFailure(@NonNull Call<List<Recipe>> call, @NonNull Throwable t) {
            Log.e(TAG, "FAIL: " + t.getMessage());
        }
    });

推荐阅读