Jak przekonwertować ciąg JSON przy użyciu biblioteki Gson ArrayList
na niestandardową klasę JsonLog
? Zasadniczo JsonLog
jest to interfejs realizowany przez różne rodzaje dzienników tworzonych przez moją aplikację na Androida - dzienniki SMS, dzienniki połączeń, dzienniki danych - i ArrayList
jest to zbiór wszystkich z nich. Wciąż pojawia się błąd w wierszu 6.
public static void log(File destination, JsonLog log) {
Collection<JsonLog> logs = null;
if (destination.exists()) {
Gson gson = new Gson();
BufferedReader br = new BufferedReader(new FileReader(destination));
logs = gson.fromJson(br, ArrayList<JsonLog>.class); // line 6
// logs.add(log);
// serialize "logs" again
}
}
Wydaje się, że kompilator nie rozumie, że mam na myśli maszynę do pisania ArrayList
. Co ja robię?
Odpowiedzi:
Możesz użyć TypeToken, aby załadować ciąg json do obiektu niestandardowego.
Dokumentacja:
Kotlin:
Jeśli chcesz to zrobić w Kotlinie , możesz to zrobić w następujący sposób:
Lub możesz zobaczyć tę odpowiedź dla różnych alternatyw.
źródło
{ }
.getType()
Twoja próbka JSON to:
więc jeśli chcesz zapisać listę arraylist modułów w SharedPrefrences, to:
1- przekonwertuje zwróconą tablicę do formatu json przy użyciu tej metody
2- Zapisz go we wspólnych preferencjach
3 - aby go odzyskać w dowolnym momencie pobierz JsonString z Preferencji współdzielonych w ten sposób
4- przekonwertować go ponownie na listę tablic
to rozwiązanie jest również wykonalne, jeśli chcesz przeanalizować ArrayList of Objects. Mam nadzieję, że pomoże ci to, używając biblioteki Gson .
źródło
Jeśli chcesz korzystać z tablic, jest to dość proste.
Podaj
JsonLog
jako tablicęJsonLog[].class
źródło
LUB
źródło
Dlaczego nikt nie napisał tego prostego sposobu konwersji ciągu JSON na List ?
źródło
Nie jestem pewien co do gson, ale tak to robisz z Jonem. Mam nadzieję, że musi być podobny sposób korzystania z gson
{„Gracze”: [„gracz 1”, „gracz 2”, „gracz 3”, „gracz 4”, „gracz 5”]}
===============================================
źródło
Masz taki ciąg .
Następnie możesz ukryć to w ArrayList za pośrednictwem Gson like
Twoja klasa HotelInfo powinna to polubić.
źródło