-1

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

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

有人有线索吗?

4

2 回答 2

2

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

InputStreamReader isr = new InputStreamReader ( inputstream );
Gson g = new Gson ();
MyResultObject result = g.fromJson ( isr, MyResultObject.class );
于 2011-01-13T16:15:51.590 回答
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),因此您需要一些代表它的类,它有一个名为“poitypes”的字段" 类型Wrapper(或任何你称之为的类型)。

现在,如果您的 JSON 对象实际上可以包含更多命名图标(称为“3”、“4”等),那么您将无法做到这一点。如果这些数字总是连续的,那么 JSON 真的应该是一个 JSON 数组而不是一个对象。如果不是,您需要使用自定义JsonDeserializer来反序列化该对象Map<Integer, NamedIcon>

于 2011-01-13T16:20:56.480 回答