使用Gson和Volley卸下多余的支架

时间:2019-01-04 14:47:14

标签: android gson android-volley

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

很遗憾,我正在尝试从(无法编辑)获取数据的网页为我提供了带有大括号的数据,并且默认情况下{{3 }}。 (纯文本流量)。

[
  [
    {
      "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));

2 个答案:

答案 0 :(得分:1)

那个括号代表一个json数组

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

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

如果使用POJO

object.get(0) 

如果使用json数组

jsonArray.get(0)

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

JSONArray jsonArray = new JSONArray(response);

答案 1 :(得分:0)

也可以将其反序列化为包含以下数组的数组:

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

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

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