2011-01-13 4 views

ответ

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> или некоторых таких.