Bei der Arbeit mit JSON ist es üblich, JSON-Daten mithilfe von Gson in typisierte Objekte zu konvertieren. Es kann jedoch vorkommen, dass Sie auf ein Szenario stoßen, in dem der Typ des ArrayList-Elements, das Sie analysieren müssen, zur Laufzeit mithilfe von Reflektion dynamisch bestimmt wird. In solchen Fällen kann der herkömmliche TypeToken-Ansatz unzureichend sein.
Betrachten Sie beispielsweise diesen Code:
Type typeOfObjectsList = new TypeToken<ArrayList<myClass>>() {}.getType(); List<myClass> objectsList = new Gson().fromJson(json, typeOfObjectsList);
Dieser Code konvertiert eine JSON-Zeichenfolge in eine Liste von myClass-Objekten. Was aber, wenn der Elementtyp der ArrayList dynamisch bestimmt werden soll?
Um dies zu erreichen, können Sie eine neue Funktion nutzen, die in Gson Version 2.8.0 eingeführt wurde: TypeToken.getParameterized. Mit dieser Methode können Sie ein TypeToken mit einem angegebenen parametrisierten Typ erstellen.
So können Sie es verwenden:
private <T> Type setModelAndGetCorrespondingList2(Class<T> type) { Type typeOfObjectsListNew = TypeToken.getParameterized(ArrayList.class, type).getType(); return typeOfObjectsListNew; }
Durch Übergabe der ArrayList-Klasse und des Klassentyps des dynamischen Elementtyps als Argumente Mit TypeToken.getParameterized erstellen Sie ein TypeToken, das eine ArrayList mit dem gewünschten Elementtyp darstellt. Dieses TypeToken kann dann als Parameter für Gson.fromJson verwendet werden, um die JSON-Daten korrekt in den gewünschten Listentyp zu analysieren.
Das obige ist der detaillierte Inhalt vonWie verwende ich Gson TypeToken mit dynamischen ArrayList-Elementtypen zur Laufzeit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!