【问题标题】:Remove extra brackets with Gson and Volley使用 Gson 和 Volley 删除额外的括号
【发布时间】:2019-01-04 14:47:13
【问题描述】:

我正在做一个小应用程序来检查我大学的笔记本电脑是否可以借出,并且我一直在关注大多数教程,例如thisthis

不幸的是,我试图从中获取数据的网页(我无法编辑)给了我带有额外括号的数据,并且默认情况下不适用于 Gson . (明文流量)。

[
  [
    {
      "z36_rec_key": "000043057000060",
      "z36_id": "16356332    ",
      "z36_due_date": 20171221,
      "z36_due_hour": 1159,
      "status": "Unavailable"
    },
    {
      "z36_rec_key": "none",
      "z36_id": "none",
      "z36_due_date": 0,
      "z36_due_hour": 0,
      "status": "Available"
    }
  ]
]

有没有办法在使用 Volley 和 Gson 时删除第一对括号?如果不是,我可以做什么解决方法?谢谢。

顺便说一下,这是我的模型。

import com.google.gson.annotations.SerializedName;

public class Laptop {
    @SerializedName("z36_rec_key")
    public String barcode;

    @SerializedName("status")
    public String status;

    @SerializedName("z36_due_date")
    public int due_date;

    public Notebook() {
    }
}

更新: 我接受了 Jaswant Singh 的建议,只是在我的请求函数中添加了一个 JSONArray。

jsonArray = new JSONArray(response);
posts = Arrays.asList(mGson.fromJson(jsonArray.get(0).toString(), ItemObject[].class));

【问题讨论】:

    标签: android gson android-volley


    【解决方案1】:

    那个括号代表一个json数组

    您只需发送最终响应的第 0 个元素即可从服务器端删除这些括号。

    或者,如果您无权访问它,只需从客户端(应用程序或网站)访问第 0 个元素(对象)就可以了。

    如果使用 POJO

    object.get(0) 
    

    如果使用json数组

    jsonArray.get(0)
    

    我建议您简单地使用 JSONArray 来解析您的响应。以字符串形式获取响应并:

    JSONArray jsonArray = new JSONArray(response);
    

    【讨论】:

      【解决方案2】:

      这也可以被反序列化为一个包含一个数组的数组,例如:

      Laptop[][] laptops = new Gson().fromJson(getPackageResourceReader(YOUR_JSON),
                                                   Laptop[][].class);
      

      你可以在这种情况下得到结果——例如——像:

      Laptop lt1 = laptops[0][0];
      Laptop lt2 = laptops[0][1];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-20
        • 1970-01-01
        • 2017-05-18
        • 2017-07-06
        • 2015-09-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多