Lorsque vous travaillez avec JSON, il est courant de convertir les données JSON en objets typés à l'aide de Gson. Cependant, vous pouvez rencontrer un scénario dans lequel le type d'élément ArrayList que vous devez analyser est déterminé dynamiquement au moment de l'exécution à l'aide de la réflexion. Dans de tels cas, l'approche TypeToken traditionnelle peut s'avérer insuffisante.
Par exemple, considérons ce code :
Type typeOfObjectsList = new TypeToken<ArrayList<myClass>>() {}.getType(); List<myClass> objectsList = new Gson().fromJson(json, typeOfObjectsList);
Ce code convertit une chaîne JSON en une liste d'objets myClass. Mais que se passe-t-il si le type d'élément de l'ArrayList doit être déterminé dynamiquement ?
Pour y parvenir, vous pouvez tirer parti d'une nouvelle fonctionnalité introduite dans la version 2.8.0 de Gson : TypeToken.getParameterized. Cette méthode vous permet de créer un TypeToken avec un type paramétré spécifié.
Voici comment vous pouvez l'utiliser :
private <T> Type setModelAndGetCorrespondingList2(Class<T> type) { Type typeOfObjectsListNew = TypeToken.getParameterized(ArrayList.class, type).getType(); return typeOfObjectsListNew; }
En passant la classe ArrayList et le type de classe de type d'élément dynamique comme arguments à TypeToken.getParameterized, vous créez un TypeToken qui représente un ArrayList avec le type d'élément souhaité. Ce TypeToken peut ensuite être utilisé comme paramètre pour Gson.fromJson pour analyser correctement les données JSON dans le type de liste souhaité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!