Saltar a contenido

prettycjson: Formateador JSON Bonito para Lua cJSON

Instalación

Si no has configurado la suscripción al repositorio RPM, regístrate. Luego puedes proceder con los siguientes pasos.

CentOS/RHEL 7 o 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

Para usar esta biblioteca Lua con NGINX, asegúrate de que nginx-module-lua esté instalado.

Este documento describe lua-resty-prettycjson v1.6 lanzado el 29 de septiembre de 2016.


lua-resty-prettycjson es un formateador JSON bonito para Lua cJSON.

API de Lua

función string(dt, [lf = "\n", [id = "\t", [ac = " ", [ec = function]]]])

Formatea de manera bonita la salida JSON. Puedes pasar lf (salto de línea) si deseas usar un salto de línea diferente al predeterminado \n. Si deseas indentar (id argumento) con algo diferente a \t (una tabulación), también puedes pasarlo como argumento. Y si deseas tener algo diferente a (espacio simple) después de los dos puntos : (ac argumento) en json, también puedes cambiar eso, prueba por ejemplo \n. Si deseas usar un codificador diferente a cJSON, pasa la función de codificación como el quinto argumento (ec). Debe aceptar cualquier cosa como parámetro de entrada, y si hay un problema con la codificación, esta función debe devolver nil y un mensaje de error, como:

nil, "Cannot serialise function: type not supported"

Para el argumento de entrada dt, acepta cualquier cosa que cjson.encode acepte (o lo que acepte la función de codificación personalizada).

Ejemplo
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", {{{{{{}}},{{},{},{}},{},{}}}}}}}}
}))

Eso producirá:

{
    "key6": [
        ""
    ],
    "key3": {
        "key3_1": "something",
        "key3_2": "something else"
    },
    "key7": [
        [
            [
                {
                    "1": [
                        [
                            [
                                [
                                    [
                                        {}
                                    ]
                                ],
                                [
                                    {},
                                    {},
                                    {}
                                ],
                                {},
                                {}
                            ]
                        ]
                    ],
                    "test": "value"
                }
            ]
        ]
    ],
    "key1": "data",
    "key5": [
        [
            ""
        ],
        [
            "",
            ""
        ],
        [
            {},
            {}
        ]
    ],
    "key2": 27,
    "key4": [
        "item1",
        "item2"
    ]
}

Cambios

Los cambios de cada versión de este módulo se registran en el archivo Changes.md.

GitHub

Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-prettycjson.