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 $.numbers dans 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"}