compte tenu de la JSON Valeur:Comment comptez-vous extraire des champs de haut niveau dans plusieurs JSON objets
val json = Json.parse(
"""
|[{
| "name" : "Agency Co",
| "worker" :{
| "FirstName" : "Bob",
| "age" : 44,
| "role" : null
| }
| },
| {
| "name" : "Agency Inc",
| "worker" :{
| "FirstName" : "Robby",
| "age" : 23,
| "role" : null
| }
| }]
""")
quand vous faites:
(json \\ "FirstName").map(_.asOpt[String].getOrElse("Cannot find field")).toList
et une liste des "prénoms" sera retourné:
List("Bob", "Robby")
Howev er, rien ne sera trouvé avec une recherche récursive ("\\") sur le champ "nom" ne fonctionnera pas même s'il y en a deux occurrences différentes. Utiliser ("\") ne retournera que la première occurrence J'ai besoin d'une liste de "noms".
Comment renvoyez-vous plusieurs valeurs de "nom" de niveau supérieur dans différents objets?
'.validate [Liste [JSObject]]. Carte (_. FlatMap {obj => (obj \\ « FirstName) .asOpt [chaîne]}) '' ou plutôt valider [Liste [T]] 'avec' T' étant une classe de cas ayant le nom properties (ou une classe Value) – cchantep
@cchantep Merci d'avoir dirigé dans la bonne direction, mais j'avais besoin du champ "name" et non du champ FirstName et l'utilisation de validate ne retournera qu'un JsResult Le code que vous avez fourni n'a pas été compilé J'ai résolu le problème Je vais soumettre la réponse dans un post après ce commentaire Merci, merci – ZDevelop94