私はすべてを試みたが、私はJavabeansなどは、私はこのために必要なもの、それを把握することはできません。GSONを使ってこれを解析するには?
"poitypes":{
"2":{
"name":"Info",
"icon":"info.png"
},
"1":{
"name":"Toilets",
"icon":"toilets.png"
}
}
誰もが手掛かりを持っていますか?
私はすべてを試みたが、私はJavabeansなどは、私はこのために必要なもの、それを把握することはできません。GSONを使ってこれを解析するには?
"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>
などのように逆シリアル化する必要があります。