我已经尝试了一切,但我无法弄清楚我需要什么 Javabeans:
"poitypes":{
"2":{
"name":"Info",
"icon":"info.png"
},
"1":{
"name":"Toilets",
"icon":"toilets.png"
}
}
有人有线索吗?
如果您在谈论GSON库,那么您可以这样做。
InputStreamReader isr = new InputStreamReader ( inputstream );
Gson g = new Gson ();
MyResultObject result = g.fromJson ( isr, MyResultObject.class );
你需要这样的东西:
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>
。