0

我将收到以下格式的 JSON 字符串:

{ "type":"groups", "groups":[ {"group":"NAME"}, ...] }

如何形成一个对象,以便以下工作。

MyClass p = gson.fromJson(jsonString, MyClass.class);

我被卡住的部分是“{“group”:“NAME”}”。这可以通过将对象保存在数组中来解决吗?例子。

public class MyClass {

    private String type;
    private List<MyOtherClass> groups = new ArrayList<MyOtherClass>();

    //getter and setter methods

}

答案:相互嵌套对象 doh!谢谢你们!现在晶莹剔透:D

public class MyOtherClass {
    private String group;

    public String getGroup() {
        return group;
    }

    public void setGroup(String group) {
        this.group = group;
    }

    @Override
    public String toString() {
        return "group: "+group;
    }
}
4

2 回答 2

2

首先,您需要该组的 POJO:

public class MyOtherClass {

   @Expose
   private String group;

   public String getGroup() {
      return group;
   }

   public void setGroup(String group) {
      this.group = group;
   }

}

接下来,您的“MyClass”需要一个,如下所示:

public class MyClass {

    @Expose
    private String type;

    @Expose
    private List<MyOtherClass> groups = new ArrayList<MyOtherClass>();

    public String getType() {
       return type;
    }

    public void setType(String type) {
       this.type = type;
    }

    public List<Group> getGroups() {
       return groups;
    }

    public void setGroups(List<Group> groups) {
       this.groups = groups;
    }

} 

希望这可以帮助。

于 2013-10-28T20:14:14.560 回答
1

乍一看,这看起来不错,假设MyOtherClass有一个名为的字段group包含一个字符串。“我被卡住的部分”是什么意思?也许您可以发布您所看到的堆栈跟踪,对您正在尝试做的事情的更广泛描述,或者最好是SSCCE

使用 GSON 时,我发现最容易实现所需的类结构,然后让 GSON 从中生成 JSON 数据。您当然可以采用另一种方式(基于 JSON 数据设计类结构),但我认为如果您不了解 GSON 想要做什么,那就更令人困惑了。

一些伪代码:

Class MyClass
  String type
  List<MyOtherClass> groups

Class MyOtherClass
  String group

看看这个,我们可以很容易地看到将保存我们的序列化对象的 JSON 如下所示:

{
  type: "...",
  groups: [
    { group: "..." },
    ...
  ]
}
于 2013-10-28T20:15:47.030 回答