Lua til JSON-konverter
Indsæt en Lua-table. Få JSON retur.
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.
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.
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.
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: