我可以在 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/