# Application de workflow 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

| Paramètre           | Type | Direction | Description                                 |
| ------------------- | ---- | --------- | ------------------------------------------- |
| `JSON_CONTENT`      | TEXT | IN        | Requête à exécuter                          |
| `JSON_CONTENT_FILE` | FILE | IN        | Requête à exécuter, stockée dans un fichier |

## 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**

```
{
    "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 :

| Paramètre                | Type | Direction | Récupérer la valeur dans une donnée | Résultat         |
| ------------------------ | ---- | --------- | ----------------------------------- | ---------------- |
| `person.address.street`  | Text | OUT       | `DATA_STREET`                       | `160 Guy Street` |
| `person.address.zipcode` | Text | OUT       | `DATA_ZIPCODE`                      | `J4G 1U4`        |
| `person.age`             | Text | OUT       | `DATA_AGE`                          | `30`             |
| `person.name`            | Text | OUT       | `DATA_NAME`                         | `John`           |

### 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**

```
{
    "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 :

| Paramètre                | Type     | Direction | Valeur IN                                                                         | Valeur OUT                                                   |
| ------------------------ | -------- | --------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| `APP_JSONPATH_DELIMITER` | Text     | IN        | `\|`                                                                              |                                                              |
| `PARAM1__JSONPATH`       | Text     | INOUT     | `person.children[?(@.name == 'Charles')].children[*].children[?(@.age > 7)].name` | donnée `DATA1_VALUE` (la valeur sera : `George\|Charlotte`)  |
| `AGE__JSONPATH`          | Text     | IN        | `$.person.age`                                                                    |                                                              |
| `AGE`                    | Numeric  | OUT       |                                                                                   | donnée `AGE_VALUE` (la valeur sera : `85`)                   |
| `DOB__JSONPATH`          | Text     | IN        | `$.person.dob`                                                                    |                                                              |
| `DOB`                    | DateTime | OUT       |                                                                                   | donnée `DOB_VALUE` (la valeur sera : `1937-09-23T00:00:00Z`) |

{% 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).<br>
* 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).<br>
* 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).<br>
* La valeur par défaut de `APP_JSONPATH_DELIMITER` est une virgule (`,`) lorsque ce paramètre n'est pas défini.
  {% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.workflowgen.com/admin-fr/8.1/application-de-workflow-jsontodata.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
