Klistra in Lua till vänster och klicka på "Konvertera" — vi gör om det till JSONKlistra in Lua-kod

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.

1

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.

2

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.

3

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: