> For the complete documentation index, see [llms.txt](https://docs.advantys.com/workflowgen-guide-administration/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.advantys.com/workflowgen-guide-administration/applications-de-workflow/application-de-workflow-jsontodata.md).

# JSONTODATA

## Aperçu

L'application de workflow **JSONTODATA** vous permet d'analyser (« parse ») le contenu JSON dans des données de processus.&#x20;

## Mode de fonctionnement

* L'application JSONTODATA nécessite le paramètre `JSON_CONTENT` ou le paramètre `JSON_CONTENT_FILE`; ceux-ci correspondent au JSON à analyser.<br>
* L'application supporte le langage de requête JSONPath (voir <https://github.com/json-path/JsonPath>), qui permet l'extraction de données spécifiques à partir du contenu JSON, similaire aux expressions XPath en XML.<br>
* Des logs d'application sont disponibles. Ceux-ci peuvent être spécifiés en définissant la valeur du paramètre `JsonToDatalLogLevel` dans le fichier `web.config` sur `0` pour désactiver la journalisation, `1` pour les logs d'erreur, `2` pour des logs d'informations ou `3` pour les logs de débogage; la valeur par défaut est `0`.<br>

## Paramètres

<table data-header-hidden><thead><tr><th valign="top">Paramètre</th><th valign="top">Type</th><th valign="top">Direction</th><th valign="top">Description</th></tr></thead><tbody><tr><td valign="top"><strong>Paramètre</strong></td><td valign="top"><strong>Type</strong></td><td valign="top"><strong>Direction</strong></td><td valign="top"><strong>Description</strong></td></tr><tr><td valign="top"><code>JSON_CONTENT</code></td><td valign="top">TEXT</td><td valign="top">IN</td><td valign="top">Requête à exécuter</td></tr><tr><td valign="top"><code>JSON_CONTENT_FILE</code></td><td valign="top">FILE</td><td valign="top">IN</td><td valign="top">Requête à exécuter, stockée dans un fichier</td></tr></tbody></table>

## Mappage des paramètres

### Utilisation de noms de paramètres simples

L'application supporte les paramètres OUT personnalisés pour mapper un contenu JSON simple.

📌 **Exemple**

```json
{
    "person": {
        "address": {
            "street": "160 Guy Street",
            "zipcode": "J4G 1U4"
        },
        "age": 30,
        "name": "John"
    }
}
```

Les paramètres suivants vous permettent de mapper le contenu JSON à différentes données de processus :

<table data-header-hidden><thead><tr><th valign="top">Paramètre</th><th valign="top">Type</th><th valign="top">Direction</th><th>Récupérer la valeur dans une donnée</th><th valign="top">Résultat</th></tr></thead><tbody><tr><td valign="top"><strong>Paramètre</strong></td><td valign="top"><strong>Type</strong></td><td valign="top"><strong>Direction</strong></td><td><strong>Récupérer la valeur dans une donnée</strong></td><td valign="top"><strong>Résultat</strong></td></tr><tr><td valign="top"><code>person.address.street</code></td><td valign="top">Text</td><td valign="top">OUT</td><td><code>DATA_STREET</code></td><td valign="top"><code>160 Guy Street</code></td></tr><tr><td valign="top"><code>person.address.zipcode</code></td><td valign="top">Text</td><td valign="top">OUT</td><td><code>DATA_ZIPCODE</code></td><td valign="top"><code>J4G 1U4</code></td></tr><tr><td valign="top"><code>person.age</code></td><td valign="top">Text</td><td valign="top">OUT</td><td><code>DATA_AGE</code></td><td valign="top"><code>30</code></td></tr><tr><td valign="top"><code>person.name</code></td><td valign="top">Text</td><td valign="top">OUT</td><td><code>DATA_NAME</code></td><td valign="top"><code>John</code></td></tr></tbody></table>

### Utilisation du langage de requête JSONPath

L'application supporte le langage de requête JSONPath, similaire aux expressions XPath en XML. Ce langage vous permet de récupérer des données spécifiques à partir d'un JSON. Voir <https://github.com/json-path/JsonPath> pour plus d'informations sur la syntaxe JSONPath.

📌 **Exemple**

```json
{
    "person": {
      "name": "Elizabeth",
      "age": 85,
      "dob": "1937-09-23T00:00:00Z",
      "children": [
        {
          "name": "Charles",
          "age": 60,
          "children": [
            {
              "name": "Nathalie",
              "children": [
                {
                  "name": "George",
                  "age": 8
                },
                {
                  "name": "Charlotte",
                  "age": 10
                },
                {
                  "name": "Jefferson",
                  "age": 7
                }
              ]
            },
            {
              "name": "Harry"
            }
          ]
        },
        {
          "name": "Bob",
          "age": 57,
          "children": [
            {
              "name": "John"
            },
            {
              "name": "Mark"
            }
          ]
        }
      ]
    }
}
```

Dans l'exemple ci-dessus, nous voulons obtenir les noms des petits-enfants de Charles âgés de plus de sept ans, et nous voulons également que ces noms soient séparés par un `|` (à l'aide du paramètre IN `APP_JSONPATH_DELIMITER`). En même temps, nous allons récupérer l'âge et la date de naissance d'Elizabeth. Pour obtenir ces informations, les paramètres suivants doivent être définis :

<table data-header-hidden><thead><tr><th valign="top">Paramètre</th><th valign="top">Type</th><th valign="top">Direction</th><th>Valeur IN</th><th valign="top">Valeur OUT</th></tr></thead><tbody><tr><td valign="top"><strong>Paramètre</strong></td><td valign="top"><strong>Type</strong></td><td valign="top"><strong>Direction</strong></td><td><strong>Valeur IN</strong></td><td valign="top"><strong>Valeur OUT</strong></td></tr><tr><td valign="top"><code>APP_JSONPATH_DELIMITER</code></td><td valign="top">Text</td><td valign="top">IN</td><td><code>|</code></td><td valign="top"></td></tr><tr><td valign="top"><code>PARAM1__JSONPATH</code></td><td valign="top">Text</td><td valign="top">INOUT</td><td><code>person.children[?(@.name == 'Charles')].children[*].children[?(@.age > 7)].name</code></td><td valign="top">donnée <code>DATA1_VALUE</code> (la valeur sera : <code>George|Charlotte</code>)</td></tr><tr><td valign="top"><code>AGE__JSONPATH</code></td><td valign="top">Text</td><td valign="top">IN</td><td><code>$.person.age</code></td><td valign="top"></td></tr><tr><td valign="top"><code>AGE</code></td><td valign="top">Numeric</td><td valign="top">OUT</td><td></td><td valign="top">donnée <code>AGE_VALUE</code> (la valeur sera : <code>85</code>)</td></tr><tr><td valign="top"><code>DOB__JSONPATH</code></td><td valign="top">Text</td><td valign="top">IN</td><td><code>$.person.dob</code></td><td valign="top"></td></tr><tr><td valign="top"><code>DOB</code></td><td valign="top">DateTime</td><td valign="top">OUT</td><td></td><td valign="top">donnée <code>DOB_VALUE</code> (la valeur sera : <code>1937-09-23T00:00:00Z</code>)</td></tr></tbody></table>

{% hint style="warning" %}

* Dans le nom du paramètre `PARAM1__JSONPATH`, le nom de `PARAM1` n'est pas pertinent, mais il doit être suivi du suffixe `__JSONPATH` (**deux** traits de soulignement sont utilisés dans le suffixe).
* Pour récupérer une valeur dans une donnée de type **Text** , vous pouvez utiliser un seul paramètre en INOUT (par exemple, le paramètre `PARAM1__JSONPATH` comme ci-dessus).
* Pour récupérer une valeur dans une donnée de type **Numeric** ou **DateTime**, vous **devez** utiliser des paramètres distincts : un paramètre IN de type Text pour la requête JSONPath et un paramètre OUT pour associer à la donnée en Numeric ou DateTime. Les deux paramètres doivent partager le même préfixe de nom (par exemple, les paramètres `AGE__JSONPATH` et `AGE` comme ci-dessus).
* La valeur par défaut de `APP_JSONPATH_DELIMITER` est une virgule (`,`) lorsque ce paramètre n'est pas défini.
  {% endhint %}
