Indsæt Lua til venstre og klik på "Konvertér" — så laver vi det om til JSONIndsæt Lua-kode

Hvad værktøjet gør

Hvis du nogensinde har haft en Lua-table fra en spil-config, et Redis-script eller en nginx-OpenResty-handler og manglede den som JSON, så klarer det her konverteringen med én paste. Ingen grund til at installere json.lua eller dkjson bare for at serialisere en konstant.

Lua-tables er lidt drilske, fordi de blander array-part (integer-keys fra 1) og hash-part (string- eller blandede keys) i den samme struktur. Konverteren regner ud, hvad du har: en ren array-part-table bliver til et JSON-array, en ren hash-part-table bliver til et JSON-objekt, og en blandet table falder tilbage til et JSON-objekt med de numeriske keys stringificeret. Det matcher det, Lua 5.4 reference manual beskriver, og det de populære JSON-biblioteker gør.

Nested tables går så langt ned, som du vil. nil bliver til null, true/false mapper direkte over, tal forbliver tal (integers forbliver integers). Strenge med enkelte citationstegn, dobbelte citationstegn eller long brackets ([[...]]) parses alle korrekt. Kommentarer (-- og --[[ ... ]]) bliver luget ud.

Sådan bruger du det

Tre skridt. Virker både for en lille table og for en config, der fylder det halve repo.

1

Indsæt din Lua (eller prøv eksemplet)

Smid din Lua-table i editoren til venstre. En array-part-table, en hash-part-table, nested tables eller flere top-level-deklarationer local x = {...} — alt går.

Lad Lua-syntaksen være. Keys uden citationstegn (name = "..."), keys med brackets (["foo-bar"] = ...) og kommentarer — det hele parses fint.

2

Tryk på Konvertér

Klik på den grønne Konvertér-knap. Værktøjet går igennem tablen, aflæser array- eller hash-form på hvert niveau og spytter tilsvarende JSON ud.

3

Kopiér JSON-en

Kopiér den indrykkede JSON fra højre panel ind i en config-fil, et API-kald eller en test-fixture. Færdig.

Hvornår det faktisk gør en forskel

Migrere spil-/engine-configs

Mange engines (Love2D, Defold, World of Warcraft-addons) bruger Lua-tables til config. Når pipelinen flytter til JSON-drevne værktøjer, er det her konverteringen i én runde.

Debug af OpenResty-/Nginx-handlers

Du byggede en response-body som en Lua-table i et OpenResty-script — indsæt den her for at se JSON-en, klienten vil få, inden du redeployer.

Redis Lua-scripts

Et Redis EVAL-script returnerer en kompleks struktur; Lua-table-literalen er nem at hive ud af loggene. Konvertér til JSON for at sammenligne med det, appen ser.

Portere config til et andet sprog

Du skifter fra et Lua-scripted værktøj til en rewrite i Node eller Go. Konvertér de gamle config-tables til JSON som migreringsformat.

Typiske spørgsmål

Hvordan beslutter den array eller object?

Samme regel som json.lua bruger: hvis tablen kun har sammenhængende integer-keys fra 1, er det et array. Ellers er det et object. Blandede tables (1, 2, "name") kommer ud som objects med de numeriske keys stringificeret, fordi JSON-arrays ikke kan have navngivne keys.

Hvad med nil inde i en table?

En nil-værdi fjerner den key i Lua — konverteren følger samme regel og springer simpelthen nil-værdi-keys over i outputtet. En enlig nil (fx local x = nil) bliver til JSON-null.

Understøtter den long-bracket-strenge som <code>[[...]]</code>?

Ja. Long-bracket-strenge (inklusive [==[...]==] med lige præcis det antal lighedstegn du vil) parses og udstedes som JSON-strenge med korrekt escaping.

Kan jeg indsætte flere tables?

Ja. Hver top-level-local name = {...} eller name = {...} bliver til en key i output-JSON-en. Anonyme trailing-tables får numeriske keys. Intet ryger stille i skraldespanden.

Gemmes min kode?

Nej — vi sender den til backend til konvertering og persister intet. Tag alligevel det følsomme ud, inden du indsætter.

Klarer den LuaRocks rockspec-filer?

Ja. Rockspec-filer er i bund og grund Lua-tables, så de konverteres rent — praktisk, hvis du skal flytte dependency-metadata til et JSON-registry-format.

Andre værktøjer du måske har brug for

Lua til JSON spiller godt sammen med resten af værktøjskassen: