android - 如何解决?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)
解决方案
使用改造
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());
}
});
推荐阅读
- c++ - 从默认参数推断模板参数
- python-2.6 - 如何与正在运行的 python 脚本交互
- c# - 设置定时器函数的持续时间 UWP C#
- jestjs - 在 Jest 中测试运行后检索全局变量
- php - 如何在php中从json bing响应中获取特定的节点值
- php - 使用 Laravel Eloquent 创建模型和获取信息的最佳实践是什么?
- node.js - 如何将 Dialog.Delegate 指令返回给 Alexa Skill 模型?
- angular - 在 Amcharts 4 上悬停一组国家而不是单个国家
- node-red - 使用 Node-RED 创建 cloudant 数据库
- php - PhpStorm 未处理的 FacebookSDKException