2017-08-21 1 views
0

Imaginez j'ai appelé un service RESTful et renvoie ce dans le corps de réponseRassurez-vous obtenir des valeurs de carte seulement du corps de la réponse

[ 
    { 
    "key": "Reason1 key", 
    "values": { 
     "en": "Reason1 English translation", 
     "es": "Reason1 Spanish translation" 
    } 
    }, 
    { 
    "key": "Reason2 key", 
    "values": { 
     "en": "Reason2 English translation", 
     "es": "Reason2 Spanish translation" 
    } 
    } 
] 

Je dois obtenir que des valeurs qui touche carte est « en »

donc j'attends le résultat comme ça après le filtrer

[ « Reason1 anglais », « REASON2 Eng traduction çais "]

OU

{" Reason1 anglais », "REASON2 anglais"}

J'avais essayer ce code suivant, mais pas encore terminé

response.then().body("findAll { it }.collect { it.values }", hasItems("Reason1 English translation", "Reason2 English translation")) 

et retour

[{en = Raison1 traduction anglaise , Es = Reason1 traduction}, {en = REASON2 traduction en anglais, es = REASON2 traduction}]

Alors, comment puis-je obtenir que des valeurs carte quelle carte correspondant condition sine qua non de l'égalité des 'en'?

Répondre

1

Changements à ....body("findAll { it }.collect { it.values.en }"

Ajouter en pour obtenir les en nœuds plutôt que le nœud entier values.

+0

Très facile :) je travaillais dessus comme une carte avec la clé et la valeur donc j'essayais .collect {it.values.key} et c'est pourquoi ça a échoué avec moi, mais maintenant ça marche comme ça fonctionne juste sur JSON pas d'objet Java. (Merci) –