Wie konvertiere ich mithilfe der Gson-Bibliothek eine JSON-Zeichenfolge in ArrayList
eine benutzerdefinierte Klasse JsonLog
? Grundsätzlich JsonLog
ist eine Schnittstelle implementiert durch verschiedene Arten von Protokollen, die von meiner Android-App erstellt wurden - SMS-Protokolle, Anrufprotokolle, Datenprotokolle - und dies ArrayList
ist eine Sammlung von allen. Ich erhalte immer wieder einen Fehler in Zeile 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
}
}
Es scheint, dass der Compiler nicht versteht, dass ich mich auf eine Eingabe beziehe ArrayList
. Was mache ich?
Antworten:
Sie können TypeToken verwenden , um die JSON-Zeichenfolge in ein benutzerdefiniertes Objekt zu laden.
Dokumentation:
Kotlin:
Wenn Sie es in Kotlin tun müssen, können Sie es so machen:
Oder Sie können diese Antwort für verschiedene Alternativen sehen.
quelle
{ }
vor.getType()
Ihr JSON-Beispiel lautet:
Wenn Sie also eine Liste von Modulen in Ihren SharedPrefrences speichern möchten, gehen Sie wie folgt vor:
1- konvertiert Ihre zurückgegebene Arrayliste mit dieser Methode in das JSON-Format
2- Speichern Sie es in freigegebenen Voreinstellungen
3- Um es jederzeit abzurufen, rufen Sie JsonString aus solchen freigegebenen Einstellungen ab
4- Konvertieren Sie es erneut in eine Array-Liste
Diese Lösung ist auch möglich, wenn Sie die ArrayList of Objects analysieren möchten . Ich hoffe, sie hilft Ihnen bei der Verwendung der Gson Library .
quelle
Wenn Sie Arrays verwenden möchten, ist dies ziemlich einfach.
Stellen Sie das
JsonLog
als Array bereitJsonLog[].class
quelle
ODER
quelle
Warum hat niemand diese einfache Methode zum Konvertieren von JSON-Zeichenfolgen in List geschrieben ?
quelle
Ich bin mir bei gson nicht sicher, aber so machst du es mit Jon. Ich hoffe, es muss einen ähnlichen Weg geben, gson zu verwenden
{"Spieler": ["Spieler 1", "Spieler 2", "Spieler 3", "Spieler 4", "Spieler 5"]}
===============================================
quelle
Du hast so einen String .
Dann können Sie es über Gson wie in ArrayList verdecken
Ihre HotelInfo- Klasse sollte dies mögen.
quelle