2011-01-13 16 views
-1

私はすべてを試みたが、私はJavabeansなどは、私はこのために必要なもの、それを把握することはできません。GSONを使ってこれを解析するには?

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

誰もが手掛かりを持っていますか?

答えて

2

GSONライブラリについて話している場合、このようなことをします。

InputStreamReader isr = new InputStreamReader (inputstream); 
Gson g = new Gson(); 
MyResultObject result = g.fromJson (isr, MyResultObject.class); 
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>などのように逆シリアル化する必要があります。

関連する問題