OSL ‐ Json Handling - Mistium/Origin-OS GitHub Wiki

About

Json is a major part of large data storage in osl. It allows for much more complex data structures over basic variables

OSL has array documentation here: Array Documentation

Defining Json objects and arrays

Do not use spaces outside of quotation marks, it can mess up the parsing

object = {"key":"data","key2":"data2"}
array = ["data","data2","data3"]
// this is good json

object = {"key":"data", "key2":"data2"}
array = ["data", "data2", "data3"]
// this json could break your program

You can store arrays in arrays 😱

array = [["data","data2"],"data3","data4"]

Official JSON docs: Json Documentation

Setting json array items

array[index] = "data"

Setting json keys

// main recommended methods
object.key = "data"
object["key"] = "data"
// [] may be slower

// other methods
object."key" = "data"
object.["key"] = "data"
object.key("key") = "data"
object.item("key") = "data"

Examples

array = ["data",["data2","data3"]]

temp = array[2]
temp[2] = "data4"
array[2] = temp

If you run the above code, array is now equal to ["data",["data2","data4"]]

ARRAY INDEXES START AT 1!!

// newest syntax
item_of_array = array[index]

// legacy supported syntax
item_of_array = array.[index]

// oldest syntax
item_of_array = array.item(index)

Getting from an object

// suggested:
key_of_object = object["key"]

// fastest
key of object = object.key

// legacy
key_of_object = object."key"
key_of_object = object.key("key")

Finding index in array

// you can find an index of an item in an array in 2 ways

log array.index(value)

log array."value"

// both do the same thing 
// only the first one allows you to use a variable in the input, the second is static