Une autre question, mais elle concerne celui-ci:
désériorize JSON avec Jackson - pourquoi JSONMappingException "Aucun constructeur approprié"? Cette fois, je reçois une erreur différente, à savoir que le Jackson Deserialiszer se plaint de ne pas avoir de "constructeur à chaîne / méthode d'usine" dans mon protocole de classe. P> Cependant, Si j'ajoute un constructeur à chaîne unique, comme celui-ci: p> public ProtocolContainer(String json) {}
4 Réponses :
Oh, alors encore une fois, j'ai découvert la réponse après avoir posté cette question (même si j'ai essayé beaucoup de choses avant de poster).
Qu'est-ce que j'ai fait pour résoudre c'était pour utiliser le et ensuite le problème résolu. P> p> @jsoncreator < / Code> Annotation. J'ai simplement annoté ma méthode statique
Créer code>, comme ceci: p>
L'exception suggère que la valeur JSON que vous avez est une chaîne, quelque chose comme: ou peut-être "JSON double-cité": p> Lorsque vous essayez de se lier comme: p> Dans quel cas Jackson n'a pas de propriétés pour mapper, juste une chaîne. Et dans ce cas, il faut effectivement un désérialiseur personnalisé ou une méthode de créateur. Les méthodes de créateur sont soit des constructeurs d'arguments à chaîne unique, soit des procédés statiques arguments à une chaîne: la différence étant que seuls les constructeurs peuvent être détectés automatiquement (il s'agit simplement d'une coupe courte pratique car il ne peut y avoir qu'un tel constructeur, mais plusieurs méthodes statiques). P> Votre solution fonctionne effectivement, je pensais simplement que je donnerais des antécédents quant à ce qui se passe. p> lire à travers elle la deuxième fois, il semble plus probable que cela semble plus probable que vous avez double -Les trucs recherchés (Json dans Json): Une autre chose à considérer est d'obtenir un JSON plain, si possible. Mais peut-être que c'est difficile à faire. P> p>
Thx pour l'information. Cependant, je ne suis pas si sûr de ce que vous pensez ici ... La chaîne JSON a l'air bien pour moi, la propriété et la valeur de là ... =)
Savoir bien sûr, il faudrait voir JSON ... D'accord, je spéculé lourdement. :)
Oui, et la chaîne JSON est effectivement imprimée dans la question que j'ai liée au sommet. Peut-être que j'aurais dû pointer cela plus clairement =)
Ah. Ok, j'étais trop paresseux pour vérifier cela, désolé. :)
Pas de soucis =) j'apprécie l'entrée =)
Je faisais face au même problème, votre réponse m'a amené à revérifier la chaîne JSON; trouvé qu'il devait avoir mal cité. Merci.
Il semble que vous envoyez au serveur une chaîne au lieu d'un objet. p>
Au lieu d'envoyer la chaîne à analyser sur le côté serveur, vous pouvez le faire plus facilement en envoyant json.parse (stringObject) code> et Jackson le désérialisera normalement comme prévu. P >
Quel serveur parlez-vous de nouveau?
J'ai eu le même problème. Pour moi, la solution consistait à passer de la section String code> à la méthode ConvertValue Code> à un
INPUTStream code> au
ReadValue code > Méthode:
// Instead of this:
String jsonString = "..."
ProtocolContainer pc = mapper.convertValue(jsonString, ProtocolContainer.class);
// ... do this:
String jsonString = "..."
InputStream is = new StringInputStream(jsonString);
ProtocolContainer pc = mapper.readValue(is, ProtocolContainer.class);