使用 Gson 和 Volley 删除多余的括号

Remove extra brackets with Gson and Volley

我正在做一个小应用程序来检查我大学里的笔记本电脑是否可以借出,我一直在学习大部分教程,比如 this and this

不幸的是,我试图从中获取数据的网页(我无法编辑)给我的数据带有额外的括号,但无法通过默认为 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));

那个括号代表一个json数组

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

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

如果使用 POJO

object.get(0) 

如果使用 json 数组

jsonArray.get(0)

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

JSONArray jsonArray = new JSONArray(response);

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

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

在这种情况下您可以获得结果 - 例如 - 如:

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