【问题标题】:Parse JSON using Retrofit使用 Retrofit 解析 JSON
【发布时间】:2019-01-19 09:33:40
【问题描述】:

我想使用改造来检索一些数据,但我有奇怪的 api。我的 JSON 以括号开头。像这样的:

({"widget": {
    "debug": "on",
    "window": {
        "title": "Sample Konfabulator Widget",
        "name": "main_window",
        "width": 500,
        "height": 500
    }});

我正在使用 Retrofit,当我尝试拨打 call.enqueue(new Callback<Response>() 时,我无法得到回复。当然,我有来自

的错误

public void onFailure(Call<Response> call, Throwable t) { Log.d("Error", t.getMessage());

D/Error: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1 path $

这是因为我的 JSON 是有效的,但我无法解析它。我在哪里以及如何修改它,删除括号?谢谢

【问题讨论】:

  • 您需要从开头删除“(”和“);”从头到尾。
  • 当我从 URL 获取数据时有什么简单的方法来处理这个问题?
  • 我有诀窍,请明确我这只是响应,当我向后端发出任何请求时你得到了?
  • @kdblue 完全正确
  • cool then ,只需在字符串中响应并使用字符串替换方法尝试,询问您是否有任何问题。

标签: android json retrofit jsonp


【解决方案1】:

我以前也有同样的问题。

当然,解决您的问题的最佳方法是要求您的后端团队从响应中删除括号,但如果您无权访问后端创建者,这是另一种解决方法:

我所做的是接受这个格式错误的 JSON 作为字符串并删除第一个和最后一个括号 然后将其重新转换为 JSONObject 并使用 Gson 进行解析。

您也可以将其作为 Object 类型接受,并通过一些变通方法提取您的 JSONObject。

【讨论】:

    猜你喜欢
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 2016-01-11
    • 2021-01-17
    • 2016-01-09
    相关资源
    最近更新 更多