< Previous | Contents | Manuals Home | Boris FX | Next >
Generic Lists
You can create generic indexed lists of objects
Mylist = [1, 2, “buckle my shoe”]
and subsequently change or retrieve the components with Mylist[2], for example. You can tack on additional items to the last slot, with Mylist[4] = 3, Mylist[5]=4, etc. It is an error to perform Mylist[10] = “why?” because that would leave a hole.
You can create a new empty list to add items to
MyNewEmptyList = [ ]
You can also create associative lists with
Color[“apple”] = “red” Color[“pear”] = “green”
You can access Color[2] as well, at this point. #Color is the number of elements, 2 in this example
Color.isKeyed is the number of keys actually set in the array; values added with no key aren’t counted.
Color.keys is the list [“apple”, “pear”]. Note that there may be fewer keys than elements in the list, if some elements have been added without keys, using numeric subscripts.
Color.key(2) = “pear”, ie the key for the nth item in the list, or a null if element has no key.
Color.index(“pear”) = 2, ie the index of a key in the list, or 0 if it cannot be
found.
Color.contains("peach") = 0, ie false.
Sizzle lets you create JSON-style hierarchical lists with optional fixed
keys: the keys must be string constants, not an expression in its own right. There’s no need/desire to distinguish between keyed and unkeyed lists here, so an example looks like this:
obj = [
"answer" : 42, "isBoolean" : true, "sequence" : [2, 3, 4], "errors" : null, "nested" : [
"hummingbird" : "ruby", "sticks": 39, "finished" : false
],
"unknown" : "whether this will be helpful"
]
Scene.JSONwrite("C:/tmp/handmade.json", obj)
As you can see, the produced object can be written to a file to produce this output:
{
"answer": 42, "isBoolean": true, "sequence": [
2,
3,
4
],
"errors": null, "nested": {
"hummingbird": "ruby", "sticks": 39, "finished": false
},
"unknown": "whether this will be helpful"
}
There are complementary functions JSONread, JSONencode (to a string, not a file), and JSONdecode (a string to a potentially-complex nested object).
Note the presence of true, false, and null entries in the input and output; they are all preserved. The Booleans true and false are variables containing the
corresponding special Boolean value. They behave as numbers in almost all contexts. To determine if a value read in is a number or a Boolean, use typeof(value) to produce either “Boolean” or “Double”.
©2023 Boris FX, Inc. — UNOFFICIAL — Converted from original PDF.