Android - 使用 GSON returns 空值列表的 Volley

Android - Volley with GSON returns null list of values

我正在尝试做一个简单的 Volley+GSON 应用程序,只是从 JSON 在线文件中提取数据

JSON

{
  "tag": [
    {
      "id": "5",
      "name": "1"
    },
    {
      "id": "5",
      "name": "1"
    }
  ]
}

我做了一个class作为模型

public class obj {
    private String id;
    private String name;

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

}

还有这个class

public class objArray {
    public ArrayList<obj> results;

    public ArrayList<obj> getResults() {
        return results;
    }

}

然后我提出了这个要求

GsonRequest<objArray> jsObjRequest = new GsonRequest<objArray>(
                Request.Method.GET,
                _LINK,
                objArray.class, null,
                createSuccessListener(),
                createErrorListener());

所以当我尝试像这样操作输出时

response.getObjs().get(0).getName();

我得到一个空异常,似乎 response.getObjs() returns 为空,响应本身不为空,只是其中的数组,我该如何解决这个问题?问题可能出在 JSON 或 GsonRequest class 中吗? 这是我在 GsonRequest class:

中获得响应的方式
return Response.success(gson.fromJson(json,clazz),HttpHeaderParser.parseCacheHeaders(response));

编辑:感谢@njzk2,我得以更正此问题,问题出在 objArray class,保存数组的变量称为 "results",其中没有元素或数组JSON 文件名为 results,这就是使值为 null 的原因,我在 JSON 文件中的数组被称为 "tag",因此该变量应该被命名为 "tag".

public ArrayList<Tag> tag;

请注意,这个问题并不是因为缺少构造函数或 setter,正如@tinysunlight 所说,我没有添加它们,应用程序仍然按预期工作。


return Response.success(gson.fromJson(new JSONObject(json).getString("tag"),clazz),HttpHeaderParser.parseCacheHeaders(response));

gson要求 模态应该有一个空的构造函数和所有 getter 和 setter:

public class obj {
    private String id;
    private String name;
   public obj(){}
    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }
    public void setId(String id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name= name;
    }
}