Elixir-naar-JSON-converter
Plak een Elixir-struct of map. JSON komt terug.
Wat deze tool doet
Als je een Elixir-struct hebt en je wilt JSON zonder Jason of Poison te moeten optuigen voor één snelle conversie, plak hem dan hier en je krijgt de JSON terug. Werkt voor een enkele %Order{}-literal, een map, een keyword list, een geneste keten van structs, of zelfs een lijst met maps van verschillende vorm.
De output komt overeen met wat Jason.encode!/1 je zou geven zodra een struct @derive Jason.Encoder heeft. Het veld __struct__ valt eruit, atom-keys worden JSON-string-keys, en geneste structs worden geneste JSON-objects. Lists worden JSON-arrays, nil wordt null, true/false gaan rechtstreeks over, integers blijven integers, floats blijven floats.
Keyword lists ([key: value, other: 1]) komen eruit als JSON-objects — de gebruikelijke Elixir-conventie. Binary strings en charlists worden allebei JSON-strings. DateTime, Date, NaiveDateTime en Time komen eruit als ISO-8601-strings volgens RFC 3339. Tuples worden JSON-arrays (dezelfde fallback die Jason met een custom encoder gebruikt).
Zo gebruik je 'm
Drie stappen. Werkt voor een map van één regel net zo goed als voor een Phoenix-context-module vol structs.
Plak je Elixir (of probeer het voorbeeld)
Gooi je code in de editor aan de linkerkant. Een struct-literal, een map, een keyword list, een geneste struct of een defstruct met een instantie — allemaal prima.
Laat de %ModuleName{}-syntax, pipes en defstruct-declaraties staan zoals ze zijn. De parser snapt het.
Klik op Converteren
Klik op de groene Converteren-knop. De tool loopt de struct door, gooit __struct__ eruit, klapt geneste structs open en levert JSON in één keer.
Kopieer de JSON
Pak de ingesprongen JSON uit het rechterpaneel. Plak hem in een Phoenix API-test, een ExUnit-fixture, of een gedeeld schema voor een GraphQL-endpoint.
Wanneer dit echt handig is
Phoenix API-fixtures
Je hebt een context-schema en wilt een JSON-fixture voor een controller-test. Plak de struct, sla de JSON op, klaar — geen gedoe met compileren en encoden in IEx.
Vorm van een GraphQL-response
Je bouwt een <a href="https://hexdocs.pm/absinthe/" target="_blank" rel="noopener">Absinthe</a>-resolver en wilt even checken welke JSON-vorm een bepaalde struct oplevert voordat je de resolver-functie aansluit.
Ecto-schemas documenteren
Een Ecto-schema-struct is in feite een JSON-contract. Converteer één keer naar JSON, commit het als API-docs, hou het in sync als het schema verandert.
Overdracht tussen talen
Je Elixir-service geeft data door aan een Python-ML-pipeline. Plak een sample-struct om te zien welke JSON het team verderop gaat verwerken.
Veelgestelde vragen
Klopt het met Jason.encode!/1?
Dat is het doel. Structs verliezen __struct__, atom-keys worden string-keys, geneste structs worden geneste objects. Dezelfde output die je zou krijgen met @derive Jason.Encoder op elke struct in de boom.
Hoe gaan atoms eruit?
Atom-keys in een map worden JSON-string-keys. Atom-values worden JSON-strings met de atom-naam erin (bijv. :active wordt "active") — zelfde gedrag als Jason.
En tuples?
Tuples worden JSON-arrays ({1, 2, 3} → [1, 2, 3]). Strikt genomen heeft Jason voor tuples een custom encoder nodig; deze tool kiest de logische default zodat je geen data mist.
Keyword lists vs maps — verschil?
Allebei komen eruit als JSON-objects. Een keyword list [name: "Ava", id: 1] en een map %{name: "Ava", id: 1} geven identieke JSON. Dubbele keys in een keyword list: de eerste wint.
Hoe worden DateTime en Decimal afgehandeld?
DateTime/Date/NaiveDateTime/Time worden ISO-8601-strings. Decimal-waarden komen eruit als JSON-nummers (of als strings als je de veiligheid van numeric-strings wilt — hangt van de situatie af). Hetzelfde als wat je van Jason krijgt met de juiste derived encoders.
Wordt mijn code opgeslagen?
Je code gaat naar de backend voor de conversie en wordt niet bewaard — we loggen de payload niet. Haal echte gebruikersdata of secrets eruit voor je plakt.
Andere tools die van pas kunnen komen
Elixir to JSON combineert prima met de rest van de gereedschapskist: