如何使用GSON解析这个?

时间:2011-01-13 15:45:54

标签: java android gson

我已经尝试了一切,但我无法弄明白Javabeans需要什么:

"poitypes":{
  "2":{
     "name":"Info",
     "icon":"info.png"
  },
  "1":{
     "name":"Toilets",
     "icon":"toilets.png"
  }
}

有没有人有线索?

2 个答案:

答案 0 :(得分:2)

如果您正在谈论GSON库,那么您可以这样做。

InputStreamReader isr = new InputStreamReader ( inputstream );
Gson g = new Gson ();
MyResultObject result = g.fromJson ( isr, MyResultObject.class );

答案 1 :(得分:2)

你需要这样的东西:

public class NamedIcon {
  private String name;
  private String icon;

  NamedIcon() {}

  public NamedIcon(String name, String icon) {
    this.name = name;
    this.icon = icon;
  }

  // Getters, equals, hashCode, toString, whatever else
}

然后是某种包装类:

public class Wrapper {
  @SerializedName("1") private NamedIcon one;
  @SerializedName("2") private NamedIcon two;

  // ...
}

然后,既然你的“poitypes”字段本身必须是另一个JSON对象的一部分(你自己发布的片段不是合法的JSON),你需要一些代表它的类,它会有一个字段被称为“{1}}类型的”poitypes“(或者你称之为的任何东西)。

现在,如果您的JSON对象实际上可以包含更多命名图标(称为“3”,“4”等),那么您将无法像这样做。如果这些数字总是顺序的,那么JSON应该是一个JSON数组而不是一个对象。如果不是,则需要使用自定义Wrapper将该对象反序列化为JsonDeserializer或其他类似对象。