Elixir til JSON-konverter
Lim inn en Elixir-struct eller map. Få JSON tilbake.
Hva verktøyet gjør
Har du en Elixir-struct og vil ha JSON uten å dra inn Jason eller Poison bare for én rask konvertering — lim den inn her og få JSON’en tilbake. Funker for en enkelt %Order{}-literal, en map, en keyword list, en nestet kjede av structs, eller til og med en liste av maps med forskjellige former.
Utdata matcher det Jason.encode!/1 ville gitt deg når en struct har @derive Jason.Encoder. Feltet __struct__ ryker, atom-nøkler blir til JSON-string-nøkler, og nestede structs flates ut til nestede JSON-objekter. Lister blir JSON-arrays, nil blir null, true/false går rett over, heltall forblir heltall, floats forblir floats.
Keyword lists ([key: value, other: 1]) sendes ut som JSON-objekter — standardkonvensjonen i Elixir. Binary strings og charlists konverteres begge til JSON-strings. DateTime, Date, NaiveDateTime og Time sendes ut som ISO-8601-strenger i tråd med RFC 3339. Tupler blir JSON-arrays (samme fallback som Jason bruker med en custom encoder).
Slik bruker du det
Tre steg. Funker for en enlinjes map like godt som for en Phoenix context-modul fullstappet av structs.
Lim inn Elixiren din (eller prøv eksempelet)
Slipp koden i editoren til venstre. En struct-literal, en map, en keyword list, en nestet struct eller en defstruct med en instans — alt er greit.
La %ModuleName{}-syntaksen, pipes og defstruct-deklarasjoner stå som de er. Parseren skjønner dem.
Trykk Konverter
Klikk på den grønne Konverter-knappen. Verktøyet går gjennom structen, kaster __struct__, folder ut nestede structs og spytter ut JSON i én runde.
Kopier JSON’en
Ta den innrykkede JSON’en fra høyre panel. Slipp den inn i en Phoenix API-test, en ExUnit-fixture eller et delt schema for et GraphQL-endpoint.
Når det faktisk er nyttig
Fixtures til Phoenix-API
Du har et context-schema og vil ha en JSON-fixture til en controller-test. Lim inn structen, lagre JSON’en, ferdig — ingen grunn til å kompilere og encode i IEx.
Form på GraphQL-svar
Du bygger en <a href="https://hexdocs.pm/absinthe/" target="_blank" rel="noopener">Absinthe</a>-resolver og vil sjekke hvilken JSON-form en gitt struct produserer før du kobler opp resolver-funksjonen.
Dokumentere Ecto-schemaer
En Ecto schema-struct er i praksis en JSON-kontrakt. Konverter til JSON én gang, commit som API-docs, hold i sync når schemaet endres.
Overlevering mellom språk
Elixir-tjenesten din sender data videre til en Python ML-pipeline. Lim inn en eksempel-struct for å se hvilken JSON teamet nedstrøms kommer til å forbruke.
Vanlige spørsmål
Matcher det Jason.encode!/1?
Det er målet. Structs mister __struct__, atom-nøkler blir string-nøkler, nestede structs flates ut til nestede objekter. Samme output som du ville fått med @derive Jason.Encoder på hver struct i treet.
Hvordan håndteres atoms?
Atom-nøkler i en map blir JSON-string-nøkler. Atom-verdier blir JSON-strings med atom-navnet i (f.eks. :active blir "active") — samme oppførsel som Jason.
Og tupler?
Tupler blir JSON-arrays ({1, 2, 3} → [1, 2, 3]). Strengt tatt krever Jason en custom encoder for tupler; verktøyet velger en fornuftig default slik at du ikke mister data.
Keyword lists vs maps — noen forskjell?
Begge sendes ut som JSON-objekter. En keyword list [name: "Ava", id: 1] og en map %{name: "Ava", id: 1} gir identisk JSON. Duplikatnøkler i en keyword list beholder første forekomst.
Hvordan håndteres DateTime og Decimal?
DateTime/Date/NaiveDateTime/Time blir ISO-8601-strenger. Decimal-verdier sendes ut som JSON-tall (eller som strings hvis du foretrekker numeric-string-sikkerhet — kommer an på formen). Samme som du ville fått fra Jason med de riktige derived encoderne.
Blir koden min lagret?
Koden din sendes til backenden for konvertering og lagres ikke — vi logger ikke payloadet. Bytt ut ekte brukerdata eller hemmeligheter før du limer inn.
Andre verktøy som kan være nyttige
Elixir to JSON spiller godt med resten av verktøykassa: