android - 改造。安卓。我可以在不解析的情况下将 json 对象下载到 String 吗?

标签 android json retrofit

我可以在 Android 设备上不使用 Retrofit 解析而将 json 对象下载为字符串吗?

当我尝试直接接近时

@GET("/api.php?action=bundle")
public void getWholeScheduleString(Callback<String> response);

我得到了错误:

"com.google.gson.JsonSyntaxException: java.lang.IllegalStateException:
Expected a string but was BEGIN_OBJECT at line 1 column 2 path $"

最佳答案

发生这种情况是因为响应是一个 JSON 对象而不是字符串。您可以执行以下操作: 首先更改getter方法:

@GET("/api.php?action=bundle")
public void getWholeScheduleString(Callback<JsonObject> response);

然后在回调的 success(JsonObject json, Response res) 方法中,您只需将其映射到一个字符串:

@Override
public void success(JsonObject response, Response arg1) {
    String myResponse = response.getAsString();
}

编辑:顺便说一句,您可以参数化查询部分 (?action=bundle) 以使该方法更通用,如下所示:

@GET("/api.php")
public void getWhateverAction(@Query("action") String action, Callback<JsonObject> response);

无论何时调用该方法,您都将“action”作为字符串参数传递。

关于android - 改造。安卓。我可以在不解析的情况下将 json 对象下载到 String 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28645822/

相关文章:

android - 改造 ListView

android - 我应该把我的 retrofit 电话和 Android 服务类放在里面吗?

android - 后台 Phonegap 以及 Activity 、流程和服务生命周期之间的关系

java - 改进错误 URL 查询字符串在提供动态值时不得有替换 block

android - 具有多个类元素的 native Android 移动应用程序测试自动机导航

java - Jackson - 在运行时修改属性而无需注释

c# - 将文件以及一些参数发布到 web api

java - 无法从字符串值 ('{' 实例化 java.util.LinkedHashMap 类型的值;没有单字符串构造函数/工厂方法

java - 比较时间戳时的 Firestore 查询问题

android - Butterknife 将 View 绑定(bind)到不同的源