如何从Gson获取变量的值

时间:2013-09-26 11:17:25

标签: java android json gson

首先,我是GSON的开端人员,所以请耐心等待。

我有一组具有这种结构的类:

class Response
  Data data;

class Data
  List<Item> items;

class Item
  String id;
  String title;
  Private Player;

class Player
  String mobile;

我正在使用这些类来检索带有GSON库的JSON。

我使用以下代码成功检索JSON数据:

Gson gson = new Gson();
Response myResponse = gson.fromJson(inputStreamReader, Response.class);

当我调试代码时,我可以看到在Item内成功检索到myResponse类值。但是,当我想访问title类中的Item变量时,我遇到了问题,因为我所拥有的只是Response类。

如何在title班级中获取Item变量?

任何帮助都是适用的,谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

您可以像这样获取数据: -

Data myData = myResponse.getData();
for(Item myItem : myData.getItems()){
    // myItem.getTitle(); will give you the title from each Item
}

这假设您已经为类中的所有字段提供了getter。

答案 1 :(得分:2)

如果您有public个属性(通常是a bad practice!),您可以这样做:

//This will iterate over all items
for (Item item : myResponse.data.items) {
    //for each item now you can get the title
    String title = myItem.title;
}

无论如何,正如我所说,你应该为你的属性private制作,并为这些属性设置getters and setters。这是Java基础知识!

即,在Response课程中,您应该有类似的内容:

private Data data;

public Data getData(){
    return this.data;
}
public void setData(Data data){
    this.data = data;
}

同样,您应该在所有课程中拥有private个属性以及getter和setter。

现在您可以通过以下方式正确访问您的项目:

//Get the Data object with the getter method
Data data = myResponse.getData();
for (Item item : data.getItems()) {
    String title = myItem.getTitle();
}