Lua til JSON-konverterer
Lim inn en Lua-table. Få JSON tilbake.
Hva verktøyet gjør
Hvis du noen gang har hatt en Lua-table fra en spill-config, et Redis-skript eller en nginx-OpenResty-handler og trengt den som JSON, så fikses det her med én paste. Ingen grunn til å installere json.lua eller dkjson bare for å serialisere en konstant.
Lua-tables er litt tricky fordi de blander array-part (integer-keys fra 1) og hash-part (string- eller blandede keys) i samme struktur. Konvertereren finner ut hvilken form du har: en ren array-part-table blir et JSON-array, en ren hash-part-table blir et JSON-objekt, og en blandet table faller tilbake til et JSON-objekt der de numeriske keys-ene er stringifisert. Det stemmer med det Lua 5.4 reference manual beskriver, og det de vanlige JSON-bibliotekene gjør.
Nestede tables går så dypt du vil. nil blir null, true/false mapper rett over, tall forblir tall (integers forblir integers). Strenger med enkle fnutter, doble fnutter eller long brackets ([[...]]) blir alle parset riktig. Kommentarer (-- og --[[ ... ]]) blir luket vekk.
Slik bruker du det
Tre steg. Funker like godt for en liten table som for en config som vokser ut av skjermen.
Lim inn Lua-en din (eller prøv eksempelet)
Slipp Lua-tablen inn i editoren til venstre. En array-part-table, en hash-part-table, nestede tables eller flere top-level-deklarasjoner local x = {...} — alt er greit.
La Lua-syntaksen være. Keys uten fnutter (name = "..."), keys med brackets (["foo-bar"] = ...) og kommentarer — alt parses som det skal.
Trykk på Konverter
Klikk den grønne Konverter-knappen. Verktøyet går gjennom tablen, leser av array- eller hash-form på hvert nivå og spytter ut tilsvarende JSON.
Kopier JSON-en
Kopier den innrykkede JSON-en fra høyre panel inn i en config-fil, et API-kall eller en test-fixture. Ferdig.
Når det faktisk er nyttig
Migrere spill-/engine-configs
Mange engines (Love2D, Defold, World of Warcraft-addons) bruker Lua-tables til config. Når pipelinen går over til JSON-drevet tooling, er dette konverteringen i én runde.
Debugge OpenResty-/Nginx-handlere
Du bygde en response-body som en Lua-table i et OpenResty-skript — lim den inn her for å se JSON-en klienten kommer til å få, før du redeployer.
Redis Lua-skript
Et Redis EVAL-skript returnerer en kompleks struktur; Lua-table-literalen er lett å fiske ut av loggene. Konverter til JSON og sammenlign med det appen ser.
Porte config til et annet språk
Du går fra et Lua-skriptet verktøy til en rewrite i Node eller Go. Konverter de gamle config-tablesene til JSON som migreringsformat.
Vanlige spørsmål
Hvordan bestemmer den array eller object?
Samme regel som json.lua bruker: har tablen kun sammenhengende integer-keys fra 1, er det et array. Ellers er det et object. Blandede tables (1, 2, "name") kommer ut som objects med numeriske keys stringifisert, fordi JSON-arrays ikke kan ha navngitte keys.
Hva med nil inni en table?
En nil-verdi fjerner den key-en i Lua — konvertereren følger samme regel og hopper rett og slett over nil-verdi-keys i outputet. En enslig nil (f.eks. local x = nil) blir til JSON-null.
Støtter den long-bracket-strenger som <code>[[...]]</code>?
Ja. Long-bracket-strenger (inkludert [==[...]==] med akkurat så mange likhetstegn du måtte ønske) blir parset og sendt ut som JSON-strenger med riktig escaping.
Kan jeg lime inn flere tables?
Ja. Hver top-level-local name = {...} eller name = {...} blir en key i output-JSON-en. Anonyme trailing-tables får numeriske keys. Ingenting forsvinner i stillhet.
Blir koden min lagret?
Nei — vi sender den til backend for konvertering og lagrer ingenting. Likevel: ta ut det sensitive før du limer inn.
Klarer den LuaRocks rockspec-filer?
Ja. Rockspec-filer er i bunn og grunn Lua-tables, så de konverteres rent — kjekt hvis du skal flytte dependency-metadata til et JSON-registry-format.
Andre verktøy du kanskje trenger
Lua til JSON passer godt sammen med resten av verktøykassa: