Exemples
Ces exemples montrent la fonctionnalité du nœud Transformation JSON.
Exemple 1 : si le modèle est défini en tant que
{
"literal": "a literal",
"field": "@@$.id",
"var": "%my_var%",
"array_of_objects": [ "@@$.phones" ],
"array_of_primitives": [ "@@$.numbers" ],
"object": { "*":"@@$.address" }
}
et si l'expression JSON donnée est transmise à l'entrée du nœud :
{
"id": 123,
"name": "fred",
"address": {
"street": "101 Main St",
"city": "London"
},
"numbers": [ 1, 2, 3 ],
"phones": [
{
"type": "mobile",
"number": "111-222-3333"
},
{
"type": "home",
"number": "444-444-5555"
}
]
}
le nœud va générer ceci en tant que sortie :
"literal": "a literal",
"field": 123,
"var": "Value of my_var",
"array_of_objects": [
{
"type": "mobile",
"number": "111-222-3333"
},
{
"type": "home",
"number": "444-444-5555"
}
],
"array_of_primitives": [
1,
2,
3
],
"object": {
"street": "101 Main St",
"city": "London"
}
}
Pour créer cette sortie, le nœud a parcouru le modèle pour générer la sortie. Il a produit les zones ci-après :
- literal – La valeur a été définie sur une valeur littérale.
- field – La valeur de la zone est obtenue à partir de l'expression de chemin
$.id, qui a la valeur 123 dans le document d'entrée. - var – La valeur est spécifiée comme nom d'une variable de flux nommée city, dont la valeur est définie dans la sortie.
- array_of_objects – La valeur de la zone est obtenue à partir de l'expression de chemin
$.phones. Etant donné que le modèle a spécifié ce chemin dans une matrice, l'expression de chemin doit renvoyer une matrice. - array_of_primitives – Un tableau de valeurs primitives est renvoyé en spécifiant l'expression de chemin
$.numbersdans la syntaxe de la matrice. - object – Un objet est remplacé par la valeur récupérée en spécifiant la valeur de clé spéciale "*" dans l'objet. S'il est trouvé, l'objet dans le modèle est remplacé par l'objet renvoyé par le chemin
$.address.
Exemple 2 : cet exemple illustre la syntaxe de la requête.
Pour déterminer l'ID du service nommé "Upload".
Le JSON envoyé au nœud est :
{
"services": [
{
"_id": "5f9ae9765bffe304360d10d6",
"name": "Upload"
},
{
"_id": "5f9ae9765bffe304565656b3",
"name": "Download"
}
]
}
Le modèle contient une expression de requête (comme indiqué par le "?")
{
"id": "@@$.services[?(@.name == \"Upload\")]._id"
}
Cette requête trouve l'objet dans la matrice "services" dont la zone "name" est définie sur "Upload". Elle renvoie ensuite la zone "_id" de cet objet pour produire cette sortie :
{"id":"5f9ae9765bffe304360d10d6"}