# JSONTODATA Workflow Application

## Overview

The **JSONTODATA** workflow application lets you parse JSON content into process data.

## How it works

* The JSONTODATA application requires either the `JSON_CONTENT` or the `JSON_CONTENT_FILE` parameter; these correspond to the JSON to parse.<br>
* The application supports the JSONPath query language (see [https://github.com/json-path/JsonPath](https://github.com/json-path/JsonPath\\)), which allows extraction of specific data from JSON content, similar to XPath expressions in XML.<br>
* Application logs are available. These can be specified by setting the value of the  `JsonToDataLogLevel` parameter in the `web.config` file to `0` to deactivate logs, `1` for error logs, `2` for information logs, or `3` for debug logs; the default value is `0`.<br>

## Parameters

| Parameter           | Type | Direction | Description                        |
| ------------------- | ---- | --------- | ---------------------------------- |
| `JSON_CONTENT`      | TEXT | IN        | Query to execute                   |
| `JSON_CONTENT_FILE` | FILE | IN        | Query to execute, stored in a file |

## Parameter mapping

### Using simple parameter names

The application supports custom OUT parameters to map simple JSON content.

📌 **Example**

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

The following parameters allow you to map the JSON content to different process data:

| Parameter                | Type | Direction | Retrieve the value into a data | Result           |
| ------------------------ | ---- | --------- | ------------------------------ | ---------------- |
| `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`           |

### Using JSONPath query language

The application supports the JSONPath query language, similar to XPath expressions in XML. This language allows you to retrieve specific data from a JSON. For more details regarding the JSONPath syntax, see <https://github.com/json-path/JsonPath>.

📌 **Example**

```
{
    "person": {
      "name": "Elizabeth",
      "children": [
        {
          "name": "Charles",
          "age": 30,
          "children": [
            {
              "name": "Nathalie",
              "children": [
                {
                  "name": "George",
                  "age": 8
                },
                {
                  "name": "Charlotte",
                  "age": 10
                },
                {
                  "name": "Jefferson",
                  "age": 7
                }
              ]
            },
            {
              "name": "Harry"
            }
          ]
        },
        {
          "name": "Bob",
          "age": 20,
          "children": [
            {
              "name": "John"
            },
            {
              "name": "Mark"
            }
          ]
        }
      ]
    }
}
```

In the above example, we want to get the names of Charles's grandsons who are older than seven years old, and we also want these names to be separated by a `|` (using the `APP_JSONPATH_DELIMITER` IN parameter). To get this information, the following parameters must be defined:

| Parameter                | Type | Direction | IN Value                                                                          | OUT Value                                          |
| ------------------------ | ---- | --------- | --------------------------------------------------------------------------------- | -------------------------------------------------- |
| `APP_JSONPATH_DELIMITER` | Text | IN        | `\|`                                                                              | -                                                  |
| `PARAM1__JSONPATH`       | Text | INOUT     | `person.children[?(@.name == 'Charles')].children[*].children[?(@.age > 7)].name` | `DATA1_VALUE` (value will be: `George\|Charlotte`) |

{% hint style="warning" %}

* In the `PARAM1__JSONPATH` parameter name, the `PARAM1` name is not relevant, but it must be followed by the `__JSONPATH` suffix (**two** underscores are used in the suffix).<br>
* The default value of `APP_JSONPATH_DELIMITER` is a comma (`,`) when this parameter is not defined.
  {% 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/8.0/jsontodata-workflow-application.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.
