3

JSON の作成と解析に Gson を使用していますが、1 つの問題に直面しました。私のコードでは、次のフィールドを使用します。

@Expose
private ArrayList<Person> persons = new ArrayList<Person>();

しかし、私のJSONは次のようにフォーマットされています:

persons:{count:"n", data:[...]}

データは人の配列です。

Gson を使用してこの JSON をクラスに変換する方法はありますか? JsonDeserializer を使用できますか?

4

2 に答える 2

6

次のようなカスタム デシリアライザー ( http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/JsonDeserializer.html )が必要です。

  public static class MyJsonAdapter implements JsonDeserializer<List<Person>>
  {
    List<Person> people = new ArrayList<>();
    public List<Person> deserialize( JsonElement jsonElement, Type type, JsonDeserializationContext context )
      throws JsonParseException
    {
      for (each element in the json data array) 
      {
        Person p = context.deserialize(jsonElementFromArray,Person.class );
        people.add(p);
      }
    }
    return people;
  }
于 2013-07-18T18:04:26.787 に答える