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.

  • The application supports the JSONPath query language (see https://github.com/json-path/JsonPath), which allows extraction of specific data from JSON content, similar to XPath expressions in XML.

  • 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.

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)

  • 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).

  • The default value of APP_JSONPATH_DELIMITER is a comma (,) when this parameter is not defined.