2011-01-13 133 views
-1

我用盡了一切,但我不能算出它的Javabean我需要什麼,這樣的:如何使用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),你需要一些代表該類的類,該類將會有一個名爲Wrapper(或者你稱之爲「類型」)的「poitypes」的字段。現在,如果你的JSON對象實際上可以包含更多的命名圖標(稱爲「3」,「4」等),那麼你就不能這樣做。如果這些數字總是順序的,那麼JSON應該是一個JSON數組而不是一個對象。如果不是,則需要使用自定義的JsonDeserializer將該對象反序列化爲Map<Integer, NamedIcon>或其他類型。