Десериализация JSON с использованием GSON - PullRequest
2 голосов
/ 26 июня 2011

Я пытаюсь разобрать JSON, но у меня возникли небольшие проблемы.

JSON:

{
"CashGames": {
    "Record": [
        {
            "_id": "1",
            "Game": "No Limit Holdem",
            "BlindAmounts": "1/3",
            "MinBuyin": "100",
            "MaxBuyin": "300",
            "CasinoID": "1",
            "MiscNotes": "",
            "MoreNotes": ""
        },
        {
            "_id": "2",
            "Game": "No Limit Holdem",
            "BlindAmounts": "2/5",
            "MinBuyin": "200",
            "MaxBuyin": "1000",
            "CasinoID": "1",
            "MiscNotes": "aria",
            "MoreNotes": ""
        }
]
}}

класс, который его определяет:

public class RecordResponse {

public Record records;

public class Record {

    public List<Result> results;
}

public static class Result {

    @SerializedName("Game")
    public String Game;

    @SerializedName("BlindAmounts")
    public String BlindAmounts;

    @SerializedName("MinBuyin")
    public String MinBuyin;

    @SerializedName("MaxBuyin")
    public String Maxbuyin;

    @SerializedName("CasinoID")
    public long CasinoID;

    @SerializedName("MiscNotes")
    public String MiscNotes;

    @SerializedName("MoreNotes")
    public String MoreNotes;
}   
}

и что я пытаюсь сделать для его анализа:

                                RecordResponse cashResponse = gson.fromJson(cashRecords, RecordResponse.class);


                            List<Result> results = cashResponse.records.results;
                            for (Result cashResult : results){
                                Log.e("log_test", cashResult.Game);
                            }

, но я получаю исключение NullPointerException при попытке объявить результаты (Список).Что я делаю не так?

1 Ответ

2 голосов
/ 26 июня 2011

Ваша структура JSON просто не соответствует структуре данных Java.

Вот пример со структурой данных Java, которая соответствует структуре JSON в исходном вопросе.

import java.io.FileReader;
import java.util.List;

import com.google.gson.Gson;

public class Foo
{
  public static void main(String[] args) throws Exception
  {
    Gson gson = new Gson();
    RecordResponse cashResponse = gson.fromJson(new FileReader("input.json"), RecordResponse.class);
    System.out.println(gson.toJson(cashResponse));

    List<Result> results = cashResponse.CashGames.Record;
    for (Result cashResult : results)
    {
      System.out.println(cashResult.Game);
    }
  }
}

class RecordResponse
{
  CashGamesContainer CashGames;
}

class CashGamesContainer
{
  List<Result> Record;
}

class Result
{
  String _id;
  String Game;
  String BlindAmounts;
  String MinBuyin;
  String Maxbuyin;
  long CasinoID;
  String MiscNotes;
  String MoreNotes;
}
...