Как разобрать это с помощью GSON? - PullRequest
0 голосов
/ 13 января 2011

Я попробовал все, но я не могу понять, какие Javabeans мне нужны для этого:

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

У кого-нибудь есть подсказка?

Ответы [ 2 ]

2 голосов
/ 13 января 2011

Вам нужно что-то вроде этого:

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> или что-то подобное.

2 голосов
/ 13 января 2011

если вы говорите о библиотеке GSON , то вы делаете что-то вроде этого.

InputStreamReader isr = new InputStreamReader ( inputstream );
Gson g = new Gson ();
MyResultObject result = g.fromJson ( isr, MyResultObject.class );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...