J'ai un objet contenant un élément de données et une exception associée.
Public class MyBean{ Private String data; Private Exception problem; . . . }
4 Réponses :
GSON peut gérer d'autres classes personnalisées en tant qu'attributs de votre première classe, mais utilisez-vous de cette façon?
gson.fromJson(yourResponse,MyBean.class)
L'exception est une tenue dans la grève est une java.lang.Exception plaine. Il se plaint du champ d'exception lui-même.
GSON se plaint en effet d'une erreur de référence circulaire lors de la tentative de sérialisation d'une structure de données comme décrit dans la question initiale.
L'exemple suivant montre ce point. P>
{ "data":"some data", "problem": { "cause":null, "message":"Ack!", "localizedMessage":"Ack!", "stackTrace": [ { "className":"com.stackoverflow.q8151082.JacksonFoo", "fileName":"JacksonFoo.java", "lineNumber":11, "methodName":"main", "nativeMethod":false } ] } }
Juste pour référence, voici un lien vers le problème respectif du Gson: code.google.com/p/google-gson/issues/detail?id=469 Veuillez veiller à ce que cela puisse accorder plus d'attention.
Je suggère d'utiliser RegistryTypehierarchyAdapter au lieu de RegistryTypeAdapter Etant donné que vous souhaitez probablement utiliser le sérieliseur personnalisé pour tous les sous-types d'exception.
Cela a été corrigé dans GSON V2.3.1
Je sais que ce n'est pas la réponse à la question spécifique (qui a été répondu correctement avant plus de 2 ans) Mais: p>
Pour ceux qui obtiennent cette exception dans d'autres cas: p>
Cette erreur se produit lors de l'analyse de champ compliqué que GSON ne sait pas d'analyser. strong> p>
Si vous avez besoin de ce champ dans votre classe, mais pas à des fins d'analyse et que vous souhaitez l'exclure de l'analyse GSON, vous pouvez: P>
ajoutez le Déclarez l'objet GSON comme celui-ci: strong> p>
gson gson = nouveau gsonbuilder (). ExcludfieldswithOutExposeAnnotation (). Créer (); P>
li>
ul>
C'est ce qui m'a aidé p>
@expose code> Annotation à tous les champs que vous souhaitez analyser strong>, (quelque chose comme
@expose ID long privé; code >) p>
li>
J'ai également été confronté au même problème dans la version 2.2.2 de GSON. Dans GSON Version 2.6.1 Je ne vois pas ce problème. p>
J'ai vécu le même problème lorsque vous essayez de sérialiser un objet avec un champ org.apache.log4j.logger.