Mam taki plik JSON:
[
{
"number": "3",
"title": "hello_world",
}, {
"number": "2",
"title": "hello_world",
}
]
Wcześniej, gdy pliki miały element główny, używałbym:
Wrapper w = gson.fromJson(JSONSTRING, Wrapper.class);
kodu, ale nie mogę myśleć, jak zakodować Wrapper
klasę, ponieważ element główny to tablica.
Próbowałem użyć:
Wrapper[] wrapper = gson.fromJson(jsonLine, Wrapper[].class);
z:
public class Wrapper{
String number;
String title;
}
Ale nie miałem szczęścia. Jak inaczej mogę to przeczytać przy użyciu tej metody?
PS Mam to do pracy używając:
JsonArray entries = (JsonArray) new JsonParser().parse(jsonLine);
String title = ((JsonObject)entries.get(0)).get("title");
Ale wolałbym wiedzieć, jak to zrobić (jeśli to możliwe) za pomocą obu metod.
Wrapper[] data = gson.fromJson(jElement, Wrapper[].class);
działa dobrze dla mnie.Odpowiedzi:
Problem jest spowodowany przecinkiem na końcu (w Twoim przypadku każdego ) obiektu JSON umieszczonego w tablicy:
Jeśli je usuniesz, Twoje dane staną się
i
powinno działać dobrze.
źródło
jackson
biblioteki i tego komentarza tworzenie tablicy i zawijanie jejArrays.asList(..)
jest szybsze niż tworzenie listy za pomocą TypeRefence. Nie testowałem tego zgson
biblioteką, ale może warto to porównać.Wydaje się, że działa dobrze. Ale
,
w twoim ciągu jest dodatkowy przecinek.źródło
przykładowe wezwanie:
źródło
GsonUtils
to klasa, w której umieścił swoją własnątoList()
metodę.źródło