JSON Path

JSONPath is a query language for JSON, similar to XPath for XML.

The result of a simple query (also called definite JSONPath) is a single value. The result of a collection query (also called indefinite JSONPath) is a list of multiple values. Results of JSONPath queries are converted to the selected KNIME type. If the result is a list and the selected KNIME type is not compatible, the execution will fail. If the result cannot be converted to the selected KNIME type, a missing value will be returned.

JSONPath queries can be automatically generated via the node configuration dialog. To create a simple query, select a single value from the JSON-Cell Preview window and click "Add single query". To create a collection query, select a value that is part of a list of values from the JSON-Cell Preview window and click "Add collection query". Alternatively, you can write your own JSONPath query by clicking the "Add JSONPath" button.

Example input:
{"book": [
  {"year": 1999,
   "title": "Timeline",
   "author": "Michael Crichton"},
  {"year": 2000,
   "title": "Plain Truth",
   "author": "Jodi Picoult"}
]}

Example JSONPath queries and evaluation results:
$.book[0]
{"year": 1999, "title": "Timeline", "author": "Michael Crichton"} (JSON or String single value)
$.book[*].year
[1999,2000] (JSON, Int or Real list)
$.book[2].year
? (no such part)
$.book[?(@.year==1999)].title
Timeline (String) or "Timeline" (JSON)

The default path ($..*) will select all possible subparts (excluding the whole JSON value).

When you request the paths instead of values for the $.book[0].* JSONPath, you will get the paths -in bracket notation- as a list of Strings:

  • $['book'][0]['year']
  • $['book'][0]['title']
  • $['book'][0]['author']
which are valid JSONPaths for the input JSON value.

The filters ?(expr)can be used to select contents with specific properties, for example $..book[?(@.publisher)] selects the books that specify their publisher (@ refers to the actual element).

The JSON Path node uses the Jayway JSONPath implementation.

Options

Settings

Input
The JSON column to select the paths from.
Remove source column
When checked, the source column will be removed.
Outputs
A summary of the paths to select from the input column. The selected row can be customized with the Edit JSONPath button below or by editing the cells within the table, double-clicking on a row.
Add single query
Adds the (specific: only the selected) path for the cursor in Preview to the output columns table.
Add collection query
Adds the (generic: the selected and the siblings within arrays) path for the cursor in Preview to the output columns table.
Add JSONPath
Adds a new row to the Outputs table. This new entry selects all available paths in the JSON, regardless of current selection in Preview. This generic entry can then be manually edited to point to a specific path. To add a path to a value selected in Preview, use Add single query or Add collection query instead.
Edit JSONPath
Allows to edit the selected row using a popup dialog.
Remove JSONPath
Removes the selected row from the Outputs table.
JSON-Cell Preview
A preview of the content of the first JSON value, if available, helps in writing JSONPath expressions. You can add new rows based on the cursor's location; move it to the value you want to select and click Add single query or Add collection query. When a row is selected in Outputs, the expected results are highlighted.

Input Ports

Icon
A table with JSON column

Output Ports

Icon
Table with the found parts

Views

This node has no views

Workflows

Links

Developers

You want to see the source code for this node? Click the following button and we’ll use our super-powers to find it for you.