prettycjson: Lua cJSON Pretty Formatter
Установка
Если вы еще не настроили подписку на RPM-репозиторий, зарегистрируйтесь. После этого вы можете продолжить с следующими шагами.
CentOS/RHEL 7 или Amazon Linux 2
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install lua-resty-prettycjson
CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-prettycjson
Чтобы использовать эту библиотеку Lua с NGINX, убедитесь, что установлен nginx-module-lua.
Этот документ описывает lua-resty-prettycjson v1.6, выпущенный 29 сентября 2016 года.
lua-resty-prettycjson — это форматировщик JSON для Lua cJSON.
Lua API
string function(dt, [lf = "\n", [id = "\t", [ac = " ", [ec = function]]]])
Красиво форматирует JSON-вывод. Вы можете передать lf (перенос строки), если хотите использовать другой перенос строки, чем по умолчанию \n. Если вы хотите использовать отступ (id аргумент) с чем-то другим, чем \t (табуляция), вы также можете передать это в качестве аргументов. И если вы хотите использовать что-то другое, чем (одиночный пробел) после двоеточий : (ac аргумент) в JSON, вы можете изменить это, попробуйте, например, \n. Если вы хотите использовать кодировщик, отличный от cJSON, передайте функцию кодирования в качестве 5-го аргумента (ec). Она должна принимать что угодно в качестве входного параметра, и если возникнет проблема с кодированием, эта функция должна вернуть nil и сообщение об ошибке, например:
nil, "Cannot serialise function: type not supported"
Для входного аргумента dt принимается всё, что принимает cjson.encode (или что угодно, что принимает ваша пользовательская функция кодирования).
Пример
local pretty = require "resty.prettycjson"
print(pretty({
key1 = "data",
key2 = 27,
key3 = {
key3_1 = "something",
key3_2 = "something else"
},
key4 = {
"item1",
"item2"
},
key5 = {},
key5 = {{''}, {'',''}, {{},{}}},
key6 = { '' },
key7 = {{{{ test = "value", {{{{{{}}},{{},{},{}},{},{}}}}}}}}
}))
Это выведет:
{
"key6": [
""
],
"key3": {
"key3_1": "something",
"key3_2": "something else"
},
"key7": [
[
[
{
"1": [
[
[
[
[
{}
]
],
[
{},
{},
{}
],
{},
{}
]
]
],
"test": "value"
}
]
]
],
"key1": "data",
"key5": [
[
""
],
[
"",
""
],
[
{},
{}
]
],
"key2": 27,
"key4": [
"item1",
"item2"
]
}
Изменения
Изменения каждой версии этого модуля зафиксированы в файле Changes.md.
GitHub
Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-prettycjson.