JSONATA Map
Overview
JSONATA Map
allows performing advanced manipulations on the doc
nodes using the JSONATA Query Language.
tip
It is possible to explore the possibilities of JSONATA using Web Editor
Configuration
It is possible to define multiple JSONATA mappings with following variables:
Jsonata
- a jsonata string for mapping fromdoc
nodesTarget path
- node ondoc
context where to place the outcomewhen enrich result is null
- if set to true then map to target with null value. by default will not map null valuesappend
- when set to true the result will be appended to the target path making the target path an array
Merge Array Items
An optional config to merge items in source and target arrays. The items of both arrays have to be in the same structure.
key
- find items to merge by this keyjsonata
- an optional jsonata expression to exclude items in the target when merging
Examples
Aggregation
Step configuration
Input | Value |
---|---|
Jsonata | { "total": $sum(cart.(price * quantity)) } |
Target path | result |
Input Schema
{
"cart": [
{
"price": 100,
"quantity": 10
},
{
"price": 120,
"quantity": 20
},
{
"price": 200,
"quantity": 5
},
{
"price": 500,
"quantity": 3
}
]
}
Flow Result
{
"doc": {
"cart": [
{
"price": 100,
"quantity": 10
},
{
"price": 120,
"quantity": 20
},
{
"price": 200,
"quantity": 5
},
{
"price": 500,
"quantity": 3
}
],
"result": {
"total": 5900
}
},
"errors": [],
"performance": {
"steps": [
{
"step": "jsonata",
"executionTime": 1
}
],
"executionTimeOfFlow": 1,
"timeMetric": "ms"
}
}
JSONATA Map Example Flow
{
"id": "1968cff9-0ee0-44b2-a73f-db0d2dfb8d63",
"name": "exampleJsonataMap",
"flow": {
"name": "exampleJsonataMap",
"description": "",
"steps": [
{
"stepType": "jsonata",
"color": "rgb(245,210,211)",
"displayName": "JSONATA Map",
"isSelected": true,
"config": {
"maps": [
{
"mergeArrayItems": {},
"jsonata": "{ \"total\": $sum(cart.(price * quantity)) }",
"targetPath": "result"
}
]
}
}
]
},
"inputSchema": {
"cart": [
{
"price": 100,
"quantity": 10
},
{
"price": 120,
"quantity": 20
},
{
"price": 200,
"quantity": 5
},
{
"price": 500,
"quantity": 3
}
]
},
"createDate": "2021-10-08T20:45:56.836Z",
"tags": [
"general"
],
"inputSchemaLabel": "",
"version": 1
}