4 Réponses :


19
votes

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 @jsoncreator < / Code> Annotation. J'ai simplement annoté ma méthode statique Créer , comme ceci: xxx

et ensuite le problème résolu.


0 commentaires

18
votes

L'exception suggère que la valeur JSON que vous avez est une chaîne, quelque chose comme: xxx

ou peut-être "JSON double-cité": xxx

Lorsque vous essayez de se lier comme: xxx

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).

Votre solution fonctionne effectivement, je pensais simplement que je donnerais des antécédents quant à ce qui se passe.

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.


6 commentaires

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.



-1
votes

Il semble que vous envoyez au serveur une chaîne au lieu d'un objet.

Au lieu d'envoyer la chaîne à analyser sur le côté serveur, vous pouvez le faire plus facilement en envoyant json.parse (stringObject) et Jackson le désérialisera normalement comme prévu.


1 commentaires

Quel serveur parlez-vous de nouveau?



1
votes

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);


0 commentaires