6
votes

Scala Lire une erreur de validation JSRESULTException JSON

J'essaie de transmettre cette chaîne JSON à mon autre méthode, mais parfois, je reçois cette erreur,

play.api.libs.json.jsResultException: JSRESULTEXCEPTION (ERREURS: LISTE (((liste (validationError (Erreur.Expecté.jsstring, Wraparray ()))))

Je trouve qu'il est étrange que cela se produit au hasard, parfois je ne reçois pas l'exception et parfois je le fais. Toutes les idées?

Voici ce que mon JSON ressemble à xxx

je l'ai lu comme xxx


2 commentaires

Quel résultat obtenez-vous lorsque vous n'obtenez pas une exception? Parce que la valeur du champ premier_name apparemment n'est pas une valeur de chaîne.


Et chaîne n'est pas JSON.


3 Réponses :


5
votes

(string \ "nom") code> donne jsvalue code> non jstring code> donc comme [string] code> ne fonctionne pas .

Mais si vous avez besoin Valeur de la prénom Code> Vous pouvez faire P>

val firstName = ((json \ "first_name") \ "value").as[String]


0 commentaires

-3
votes

Tout d'abord, vous ne pouvez pas traverser un objet string , votre entrée doit donc être convertie en JSValue pour pouvoir le traverser: xxx

alors le dactylographique attribut est de type JSValue et non une chaîne si vous essayez d'extraire le FREST_NAME < / forte> valeur comme vous, vous obtiendrez toujours une jsresultexception .

Je ne peux qu'expliquer l'apparence aléatoire de JsResultException par un changement de radom de votre Premier_Name Structure JSON de champ. Marquez sur votre apport de piqûre sur Traverse a toujours une structure classée FORTRY_NAME .


0 commentaires

0
votes

Ceci est une autre option à prendre en compte pour la sécurité de type lors de la lecture et de l'écriture JSON avec une API JSON JSON. Ci-dessous, je montrent avec votre JSON comme exemple de lecture et d'écriture de lecture est analogue.

  1. représente des données comme des classes de cas.

    Personne de cas (ID: Carte [String, String], FirstName: Carte [String, String], Nom: [String, String]

  2. écrire implicite lecture / écriture pour vos classes de cas.

    implicital VAL Personreads: lit [personne]

  3. Employez la combinaison de combinaisons Lire les API. Importer l'implicite où vous avez lu le JSON et vous récupérez l'objet de la personne. Vous trouverez ci-dessous l'illustration.

    val personnagej = json.fromjson [personne] (JSON)

    Veuillez regarder ici https://www.playframework.com/documentation/ 2.6.x / scalajsonautomated


0 commentaires