Lua till JSON-konverterare
Klistra in en Lua-table. Få JSON tillbaka.
Vad verktyget gör
Om du någon gång haft en Lua-table från en spelconfig, ett Redis-skript eller en nginx-OpenResty-handler och behövt den som JSON, då är det här fixat med en paste. Inget behov att installera json.lua eller dkjson bara för att serialisera en konstant.
Lua-tables är lite lurige eftersom de blandar array-part (integer-keys från 1) och hash-part (string- eller blandade keys) i samma struktur. Konverteraren plockar upp vilken form du har: en ren array-part-table blir en JSON-array, en ren hash-part-table blir ett JSON-objekt, och en blandad table faller tillbaka på ett JSON-objekt med de numeriska keys:na stringifierade. Det stämmer med vad Lua 5.4 reference manual beskriver och hur de populära JSON-biblioteken gör.
Nästlade tables går så djupt du vill. nil blir null, true/false mappas rakt av, tal förblir tal (integers förblir integers). Strängar med enkla citattecken, dubbla citattecken eller long brackets ([[...]]) parsas alla korrekt. Kommentarer (-- och --[[ ... ]]) plockas bort.
Så använder du det
Tre steg. Funkar lika bra för en liten table som för en config som bara växer.
Klistra in din Lua (eller testa exemplet)
Släpp Lua-tablen i vänstra editorn. En array-part-table, en hash-part-table, nästlade tables, eller flera top-level-deklarationer local x = {...} — allt funkar.
Låt Lua-syntaxen vara. Keys utan citattecken (name = "..."), keys med brackets (["foo-bar"] = ...) och kommentarer — alltihop parsas rätt.
Tryck på Konvertera
Klicka på den gröna Konvertera-knappen. Verktyget vandrar igenom tablen, känner av array- eller hash-form på varje nivå och spottar ut matchande JSON.
Kopiera JSON-en
Kopiera den indenterade JSON-en från högra panelen in i en configfil, ett API-anrop eller en test-fixture. Klart.
När det här verkligen kommer till nytta
Migrera spel-/engine-configs
Många engines (Love2D, Defold, World of Warcraft-addons) använder Lua-tables för config. När pipelinen går över till JSON-baserad tooling är det här engångskonverteringen.
Debugga OpenResty- / Nginx-handlers
Du byggde en response-body som en Lua-table i ett OpenResty-skript — klistra in den här för att se JSON-en klienten kommer att få, innan du redeployar.
Redis Lua-skript
Ett Redis EVAL-skript returnerar en komplex struktur; Lua-table-literalen är lätt att fånga från loggarna. Konvertera till JSON för att jämföra med det appen ser.
Porta config till ett annat språk
Du byter från ett Lua-skriptat verktyg till en rewrite i Node eller Go. Konvertera de gamla config-tables till JSON som migreringsformat.
Vanliga frågor
Hur bestämmer det array eller object?
Samma regel som json.lua använder: om tablen bara har sammanhängande integer-keys från 1 är det en array. Annars är det ett object. Blandade tables (1, 2, "name") kommer ut som objects med de numeriska keys:na stringifierade, eftersom JSON-arrays inte kan ha namngivna keys.
Hur är det med nil i en table?
Ett nil-värde tar bort den key:en i Lua — konverteraren följer samma regel och hoppar bara över nil-värderade keys i outputen. Ett ensamt nil (t.ex. local x = nil) blir JSON-null.
Stöds long-bracket-strängar som <code>[[...]]</code>?
Ja. Long-bracket-strängar (inklusive [==[...]==] med hur många likhetstecken som helst) parsas och skickas ut som JSON-strängar med korrekt escaping.
Kan jag klistra in flera tables?
Ja. Varje top-level-local name = {...} eller name = {...} blir en key i output-JSON-en. Anonyma tables på slutet får numeriska keys. Inget tappas bort i tysthet.
Lagras min kod?
Nej — vi skickar den till backend för konvertering och persistar ingenting. Men plocka ändå bort känsliga grejer innan du klistrar in.
Klarar det LuaRocks rockspec-filer?
Ja. Rockspec-filer är i grunden Lua-tables, så de konverteras rent — smidigt om du ska flytta beroende-metadata till ett JSON-registry-format.
Andra verktyg du kanske behöver
Lua till JSON passar bra ihop med resten av verktygslådan: