CS2 Lua API

json

Библиотека json (lua-cjson) переводит значения Lua в JSON и обратно. При ошибке функции не бросают исключение, а возвращают nil и текст ошибки.

Настройки json.encode_* / json.decode_* общие для всех включённых скриптов. Если нужны свои настройки, создайте отдельный экземпляр через json.new().

json.encode(value)#

Переводит значение Lua в строку JSON.

Параметр Тип Описание
value any таблица, строка, число, boolean или json.null

Возвращает: string или nil, string — при ошибке текст ошибки (например, Cannot serialise function).

local s = json.encode({ name = "player", hp = 100, tags = { "a", "b" } })
print(s)   --> {"name":"player","hp":100,"tags":["a","b"]} (порядок ключей может отличаться)

json.decode(text: string)#

Разбирает строку JSON.

Параметр Тип Описание
text string JSON

Возвращает: значение Lua или nil, string при ошибке разбора.

local data, err = json.decode('{"a": 5, "list": [1, 2, 3]}')
if data then
    print(data.a, " ", data.list[3])   --> 5 3
else
    print("Ошибка: ", err)
end

print(json.decode("{bad"))   --> nil  Expected ... at character 2

json.null#

Значение, которым представлен JSON null.

local t = json.decode('{"x": null}')
print(t.x == json.null)   --> true

json.new()#

Новый независимый экземпляр библиотеки со своими настройками.

Возвращает: table — таблица с теми же функциями.

local myjson = json.new()
myjson.encode_number_precision(4)
print(myjson.encode({ pi = math.pi }))   --> {"pi":3.142}

Настройки#

Функция Аргументы По умолчанию Описание
json.encode_sparse_array convert?, ratio?, safe? false, 2, 10 обработка разреженных массивов
json.encode_max_depth depth? 1000 наибольшая вложенность при кодировании
json.decode_max_depth depth? 1000 наибольшая вложенность при разборе
json.encode_number_precision n? (1–14) 14 число значащих цифр
json.encode_keep_buffer boolean? true переиспользовать буфер
json.encode_invalid_numbers boolean? или "null" false как кодировать NaN и бесконечность
json.decode_invalid_numbers boolean? true принимать NaN и бесконечность при разборе

Каждая функция без аргументов возвращает текущее значение настройки.

print(json.encode_max_depth())   --> 1000