Lim inn Lua til venstre og klikk "Konverter" — så gjør vi det om til JSONLim inn Lua-kode

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.

1

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.

2

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.

3

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: