Перейти к содержанию

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.