Imaginons que j'ai une classe Java du type: puis j'ai ceci: p> Ma question est, de quel type de classe doit Merci P> P> Par2 code> JSON me est donné à partir d'une autre application et je ne sais jamais ce qu'est ce sont les noms de paramètres, car ils sont dynamiques. P>
Par2 Code> La variable sur MyClass doit être définie sur, de sorte que la variable de chaîne JSON soit correctement désérialisée à mon objet de classe? p>
4 Réponses :
Check out sérialiser et désérialiser générique générique Types du Guide de l'utilisateur GSON:
Type fooType = new TypeToken<Myclass<Foo>>() {}.getType(); gson.fromJson(json, fooType);
Je ne pense pas que cela aide l'OP. Il ne sait pas quel type l'objet va être avant d'exécuter la désérialisation.
Voir la réponse de Kevin Dolan sur cette question: Comment peut-on Je convertis JSON en HASHMAP avec GSON? P>
Note, ce n'est pas la réponse acceptée et vous devrez probablement le modifier un peu. Mais c'est assez génial. P>
Alternativement, abandonnez la sécurité de type de votre objet de niveau supérieur et utilisez simplement des hachons et des matrices jusqu'au bout. Moins de modification au code de Dolan de cette façon. P>
Ce code:
devrait être: p> Je pense (si vous analysez un document JSON). p> p> gson gson = nouveau gsonbuilder.create (); code>
Votre suggestion est exactement équivalente au code d'origine. Cela ne ferait rien.
Si vous obtenez un nom dynamique à l'intérieur, disons celui-ci:
@Getter @Setter class MyFunnyObject { Includes Includes; class Includes { Map<String, Products> Products; class Products { String CategoryId; String Description; } } }
Êtes-vous attaché à GSON? Votre cas d'utilisation pourrait être traité beaucoup mieux avec un processeur JSON Free Form comme JSON-Simple (. google.com/json-simple ).