Mam problem z utworzeniem mapowania dla pliku json, który chcę przeanalizować, używając json. Jest bardzo specyficzny, dotyczy pliku json z tablicą json z obiektami.Parsowanie pliku json z gsonem
mój jsonfile zaczyna się tak:
[
{
"venue": {
"venue_seasons": [
{
"created_at": "2011-12-25T23:00:28Z",
"updated_at": "2011-12-28T15:13:53Z",
"start_timestamp": 1293840000,
"id": 337,
"end": "2011-12-24T00:00:00Z",
"enabled": true,
"start": "2011-01-01T00:00:00Z",
"season_openings": [ … ],
"end_timestamp": 1324684800
},
{ … }
],
"address": "someadress",
"city": "cityname",
"name": "name",
"created_at": "2011-03-31T07:55:33Z",
etcetera
}
"venue":{another venue
Więc najpierw tablicę, niż przedmiot (miejsce) z wielu przedmiotów w nim (i usuwa większość z nich, ponieważ to nie jest ważne dla mojego pytania) i niektóre tablice (jak np. season_openings).
Mój parsujący kod działa w ten sposób, używam gson. Wejście działa dobrze.
Reader reader = new InputStreamReader(inputStream);
JsonResponse venueResponse = gson.fromJson(reader, JsonResponse.class);
List<Venues> results = venueResponse.venue;
z klasy JsonResponse:
public class JsonResponse {
public List<Venues> venue;
}
i Venues.class:
public class Venues {
public List<VenueSeasons> venue_seasons;
@SerializedName("adress")
public String getAdress;
@SerializedName("city")
public String getCity;
@SerializedName("country")
public String getCountry; etcetera
}
Ale gdy uruchamiam ten kod pojawia się błąd:
Unable to start activity ComponentInfo{com.hera.android.JSON/com.hera.android.JSON.TestParser2Activity}: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2
Ofcourse mogę odczytać błąd: oczekuje o bjects, ale otrzymasz tablicę. Różniłem się bardzo z różnymi jsonresponse.class, a nawet z umieszczaniem całej tablicy json w obiekcie json (co nie jest tak naprawdę rozwiązaniem, ponieważ potrzebuję pracować z tym typem pliku json). Ale za każdym razem otrzymuję ten lub podobny błąd.
Myślę, że jestem bliski rozwiązania, czy ktoś może zobaczyć, czego nie mogę i udzieli mi pomocy? Dzięki.
Przy niepoprawnym przykładzie JSON i niekompletnym nieprawidłowym przykładowym kodzie Java osoby, które mogą spróbować pomóc, zgadują, co naprawdę się dzieje. Dobrą praktyką jest publikowanie pełnych, minimalnych przykładów, które demonstrują problem próbujący zostać rozwiązany. –