当前位置: 首页 > 知识库问答 >
问题:

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

莘羽
2023-03-14

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

当我尝试直接接近时

@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 $"

共有3个答案

逑景铄
2023-03-14
匿名用户

通过将响应对象添加到翻新回调的< code > success(SomeType JSON _ Response _ Object,Response res)方法中,可以使用GSON将响应对象恢复为JSON字符串

Gson gson = new Gson();

// convert java object to JSON format,
// and returned as JSON formatted string
String json = gson.toJson(JSON_Response_Object);

柯建业
2023-03-14

而不是回调

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

之后,您可以通过以下方式访问响应的正文:

response.getBody().toString();

我不确定它是否能正常工作,但是你可以试试。

阎功
2023-03-14

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

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

然后,在回调的成功(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”作为String参数传递。

 类似资料:
  • 问题内容: 我试图解析Java中的JSON字符串并找到键值对,以便我可以确定JSON对象的近似结构,因为JSON字符串的对象结构是未知的。 例如,一个执行可能具有这样的JSON字符串: 另一个像这样: 如何遍历各种JSON元素并确定键及其值?我看着的。我知道如何获取下一个“令牌”并确定令牌的类型(即字段名称,值,数组开头等),但是,我不知道如何获取实际令牌的值。 例如: 或其他库(或)中是否有一个

  • //类B扩展类并添加一个附加变量 //这是主类 在不使用铸造的情况下如何设计解决上述问题?很抱歉问了这个低级的问题(我是java新手)。

  • 我是翻新和json的新手,我不知道如何解析下一个JSON字符串: } 我只想要权重数组中的“权重”和“日期”。我根据一些例子创建了一个pojo类,但是它不起作用。同样,当我在pojo类中尝试使用< code >时,我无法获得字符串形式的“weight ”(我将把它用作double)。string()。 (我知道使用<代码>。toString()显示类似“com.myPackage.MyPojo@x

  • 我有一个四叉树,我想在几个不同的机器上使用它。调用构造函数(即构建树)需要很长时间。我不想每次我需要使用它的时候都建这棵树。 我正在寻找一种方法,将我的树持久保存在硬盘中,发送到每个节点,然后快速将其加载到内存中,以便执行查找。 序列化能帮助我吗?我知道我可以序列化树,把它保存到磁盘上,然后反序列化(这就是我对序列化的全部了解)。据我所知,反序列化步骤需要一个默认的构造函数来构建树。因为构建树的计

  • 它成功获取名称、状态和登录。但它将0分配给u_id(用户ID),应该是4。也许它从Json获取id作为字符串?我不知道整数的正确JSON格式。 JSON: POJO:公共类LoginModel{ 界面: 改装功能调用:

  • 问题内容: 我需要一个解决方案将String转换为字节数组,而无需像这样更改: 输入: 输出: 当我使用 那么回复是 但我希望回复是 问题答案: 您应始终确保序列化和反序列化使用相同的字符集,这会将字符映射到字节序列,反之亦然。默认情况下,String.getBytes()和新的String(bytes)使用默认字符集,该字符集可能是特定于语言环境的。 使用getBytes(Charset)重载