purpose | retrieve the value of a property from JSON strings |
---|---|
input | a selection of JSON strings |
parameter | one or more indexes of the property to retrieve |
output | the values of each of the retrieved properties |
Learn more about how to use Filters
Depuis : 5.2.4 See JSON in TiddlyWiki for background.
The jsonget
operator is used to retrieve values from JSON data as strings. See also the following related operators:
jsontype
to retrieve the type of a JSON valuejsonindexes
to retrieve the names of the fields of a JSON object, or the indexes of a JSON arrayjsonextract
to retrieve a JSON value as a string of JSON
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 jsonget
operator uses multiple parameters to specify the indexes of the property to retrieve:
[<jsondata>jsonget[a]] --> "one"
[<jsondata>jsonget[d],[e]] --> "four"
[<jsondata>jsonget[d],[f],[0]] --> "five"
Depuis : 5.3.2 Negative indexes into an array are counted from the end, so -1 means the last item, -2 the next-to-last item, and so on:
[<jsondata>jsonget[d],[f],[-1]] --> null
[<jsondata>jsonget[d],[f],[-2]] --> false
[<jsondata>jsonget[d],[f],[-4]] --> "six"
Indexes can be dynamically composed from variables and transclusions:
[<jsondata>jsonget<variable>,{!!field},[0]]
Boolean values and null are returned as normal strings. The jsontype
operator can be used to retrieve a string identifying the original type. Thus:
[<jsondata>jsontype[a]] --> "string"
[<jsondata>jsontype[d]] --> "object"
[<jsondata>jsontype[d],[f]] --> "array"
[<jsondata>jsontype[d],[f],[2]] --> "boolean"
Using the jsonget
operator to retrieve an object or an array returns a list of the values. For example:
[<jsondata>jsonget[d],[f]] --> "five","six","true","false","null"
[<jsondata>jsonget[d],[g]] --> "max","may","maize"
The jsonindexes
operator retrieves the corresponding indexes:
[<jsondata>jsonindexes[d],[f]] --> "0", "1", "2", "3", "4"
[<jsondata>jsonindexes[d],[g]] --> "x", "y", "z"
If the object or array contains nested child objects or arrays then the values are retrieved recursively and returned flattened into a list. For example:
[<jsondata>jsonget[d]] --> "four","five","six","true","false","null","max","may","maize"
A subtlety is that the special case of a single blank parameter is used to identify the root object. Thus:
[<jsondata>jsonindexes[]] --> "a", "b", "c", "d"