Workbench

JSON Path Expression Syntax and Examples

JSON PATH:

FieldPortioning
Tab
Description
JSON PATH The JSON Path Expression used to located the data to be returned.

JsonPath expressions always refer to a JSON structure in the same way as XPath expression are used in combination with an XML document. The “root member object” in JsonPath is always referred to as $ regardless if it is an object or array.

JsonPath expressions can use the dot-notation

$.store.book[0].title

or the bracket-notation

$[‘store’][‘book’][0][‘title’]

Operators

Operator Description
$ The root element to query. This starts all path expressions.
@ The current node being processed by a filter predicate.
* Wildcard. Available anywhere a name or numeric are required.
.. Deep scan. Available anywhere a name is required.
.<name> Dot-notated child
[‘<name>’ (, ‘<name>’)] Bracket-notated child or children
[<number> (, <number>)] Array index or indexes
[start:end] Array slice operator
[?(<expression>)] Filter expression. Expression must evaluate to a boolean value.

Functions

Functions can be invoked at the tail end of a path – the input to a function is the output of the path expression. The function output is dictated by the function itself.

Function Description Output
min() Provides the min value of an array of numbers Double
max() Provides the max value of an array of numbers Double
avg() Provides the average value of an array of numbers Double
stddev() Provides the standard deviation value of an array of numbers Double
length() Provides the length of an array Integer

Filter Operators

Filters are logical expressions used to filter arrays. A typical filter would be [?(@.age > 18)] where @ represents the current item being processed. More complex filters can be created with logical operators && and ||. String literals must be enclosed by single or double quotes ([?(@.color == ‘blue’)] or [?(@.color == “blue”)]).

Operator Description
== left is equal to right (note that 1 is not equal to ‘1’)
!= left is not equal to right
< left is less than right
<= left is less or equal to right
> left is greater than right
>= left is greater than or equal to right
=~ left matches regular expression [?(@.name =~ /foo.*?/i)]
in left exists in right [?(@.size in [‘S’, ‘M’])]
nin left does not exists in right
subsetof left is a subset of right [?(@.sizes subsetof [‘S’, ‘M’, ‘L’])]
anyof left has an intersection with right [?(@.sizes anyof [‘M’, ‘L’])]
noneof left has no intersection with right [?(@.sizes noneof [‘M’, ‘L’])]
size size of left (array or string) should match right
empty left (array or string) should be empty

Path Examples

Given the json

{
    "store": {
        "book": [
            {
                "category": "reference",
                "author": "Nigel Rees",
                "title": "Sayings of the Century",
                "price": 8.95
            },
            {
                "category": "fiction",
                "author": "Evelyn Waugh",
                "title": "Sword of Honour",
                "price": 12.99
            },
            {
                "category": "fiction",
                "author": "Herman Melville",
                "title": "Moby Dick",
                "isbn": "0-553-21311-3",
                "price": 8.99
            },
            {
                "category": "fiction",
                "author": "J. R. R. Tolkien",
                "title": "The Lord of the Rings",
                "isbn": "0-395-19395-8",
                "price": 22.99
            }
        ],
        "bicycle": {
            "color": "red",
            "price": 19.95
        }
    },
    "expensive": 10
}
JsonPath Result
$.store.book[*].author The authors of all books
$..author All authors
$.store.* All things, both books and bicycles
$.store..price The price of everything
$..book[2] The third book
$..book[-2] The second to last book
$..book[0,1] The first two books
$..book[:2] All books from index 0 (inclusive) until index 2 (exclusive)
$..book[1:2] All books from index 1 (inclusive) until index 2 (exclusive)
$..book[-2:] Last two books
$..book[2:] Book number two from tail
$..book[?(@.isbn)] All books with an ISBN number
$.store.book[?(@.price < 10)] All books in store cheaper than 10
$..book[?(@.price <= $[‘expensive’])] All books in store that are not “expensive”
$..book[?(@.author =~ /.*REES/i)] All books matching regex (ignore case)
$..* Give me every thing
$..book.length() The number of books

Why are the screens are often very small and truncating the text/buttons on the Workbench using Windows 10?

If the Scaling of text and other items is too high(see image below) it will cause the Workbench to display labels incorrectly.  To fix this go to the following in Windows 10 and change the value to 100%:

Display Settings/Advanced Display Settings/Advanced sizing of text and other items/select a custom scaling level/Custom sizing options screen loads..by default it should be 100%, if it is something greater like 200% it will display incorrectly.

What are the password requirements for users

The BridgeGate users passwords have a minimum eight chars long with upper and lower case letters, numbers.    The user passwords are the same for portal, FTP, SSH, SFTP and all other related BridgeGate services the user has permissions to access.
Note: This can be replaced with using LDAP or other authentication systems.

How does using Wild Cards in File Name Masks on a Get Data affect Workflow Processing?

If you use a Wild Card pattern in the File Name Mask field for File or FTP Get Data types, a transaction/workflow will be instantiated for every file meeting the wild card pattern.  For example, if you use FTM*.txt in the File Name Mask and the following files exist (FTM01.txt, FTM02.txt, FTM03.txt), three transactions/workflows will be generated.  This happens regardless of where the Get Data is located in the workflow.

When I log into the Workbench, why are all of the Menu options under the Repository Menu disabled?

The menu options are disabled on the BridgeGate Workbench for one of two reasons:

  1. BridgeGate Client users have the ability to work in ‘Off Line Mode’.  If the user logs into the Client in ‘Off Line Mode’ then the Menu options will be disabled because the BridgeGate Client uses MySQL on the BridgeGate Server to read and update the Account Data, Predefined Connection Data, and Trading Partner Data.
  2. If an Account exists on the Client but does not exist on the Server, the Menu options will be disabled.  This can occur if a user adds an account in Explorer rather than creating an account via the Portal.  All new Accounts should be created via the BridgeGate Portal.