This page is part of a static HTML representation of the TiddlyWiki at https://tiddlywiki.com/

jsonextract Operator

 11th June 2022 at 10:47am
purposeretrieve the JSON string of a property from JSON strings
inputa selection of JSON strings
parameterone or more indexes of the property to retrieve
outputthe JSON string values of each of the retrieved properties
Learn more about how to use Filters

New in: 5.2.4 See JSON in TiddlyWiki for background.

The jsonextract operator is used to retrieve values from JSON data as JSON substrings. See also the following related operators:

  • jsonget to retrieve the values of a property in JSON data
  • jsontype to retrieve the type of a JSON value
  • jsonindexes to retrieve the names of the fields of a JSON object, or the indexes of a JSON array

Properties within a JSON object are identified by a sequence of indexes. In the following example, the value at [a] is one, and the value at [d][f][0] is five.

{
    "a": "one",
    "b": "",
    "c": "three",
    "d": {
        "e": "four",
        "f": [
            "five",
            "six",
            true,
            false,
            null
        ],
        "g": {
            "x": "max",
            "y": "may",
            "z": "maize"
        }
    }
}

The following examples assume that this JSON data is contained in a variable called jsondata.

The jsonextract operator uses multiple operands to specify the indexes of the property to retrieve. Values are returned as literal JSON strings:

[<jsondata>jsonextract[a]] --> "one"
[<jsondata>jsonextract[d],[e]] --> "four"
[<jsondata>jsonextract[d],[f],[0]] --> "five"
[<jsondata>jsonextract[d],[f]] --> ["five","six",true,false,null]
[<jsondata>jsonextract[d],[g]] --> {"x":"max","y":"may","z":"maize"}

Indexes can be dynamically composed from variables and transclusions:

[<jsondata>jsonextract<variable>,{!!field},[0]]

A subtlety is that the special case of a single blank operand is used to identify the root object. Thus:

[<jsondata>jsonextract[]] --> {"a":"one","b":"","c":"three","d":{"e":"four","f":["five","six",true,false,null],"g":{"x":"max","y":"may","z":"maize"}}}