Warp supports values of a list type. A list is a (possibly empty) ordered collection of values, which may be of any type. Lists can hence also be nested.
Lists can be accessed using brackets: {1,2,3}[2]
returns the second element, or '2' from the list (lists start counting at '1'). If the index does not exist, the returned value will be invalid.
If a list contains key-value pairs (e.g. {"foo";"bar";"baz";"bam"}
you can access the value corresponding to a key using the arrow syntax: {"foo";"bar";"baz";"bam"}->"baz"
returns 'bam' in this example. The value returned will be invalid when the indicated key does not exist.
The following function can be used to work with lists:
Function | Description |
---|---|
ITEMS(x) | Returns the number of items in list x |
PACK(x) | Creates a pack from list x |
UNPACK(p) | Creates a list from the pack p |
APPEND(xs; x1; x2; ...) | Appends items x1, x2, ... to list xs |
APPEND.LIST(xs; ys1; ys2) | Appends the items in lists ys1, ys2, .. to list xs |
LIST(x1;x2;..) | Creates a list of items x1, x2, ... |
GLUE(xs; separator) | Creates a string by joining items in the list together, separated by separator |
TO.JSON(x) | Formats list x as JSON string |
Note: the above functions all return an invalid value when a list parameters is filled with a value that is not a list. Single values are never implicitly converted to lists and vice-versa.
The following functions produce lists:
Function | Description |
---|---|
FROM.JSON(x) | Returns a list representation of the JSON string x |
UNPACK(s) | Returns a list by unpacking the pack string s |
SPLIT(s; separator) | Returns a list of strings by splitting string s by separator |
Using the FROM.JSON function, you can parse JSON strings into packs. This is useful when you want to extract specific fields from JSON strings. JSON objects are translated to packs with key-value pairs, whereas arrays are converted to plain list packs. For instance, the following JSON string:
{"foo":"bar", "baz":{"deepSpace": 9}}
Will be represented as the following list:
{"foo"; "bar"; "baz"; {"deepSpace"; 9}}
Reading fields from this list is simple:
=FROM.JSON("{""foo"":""bar"", ""baz"":{""deepSpace"": 9}}")->"baz"->"deepSpace" will return 9