Elixir til JSON-konverter
Indsæt en Elixir-struct eller map. Få JSON retur.
Hvad værktøjet gør
Har du en Elixir-struct og vil have JSON uden at hive Jason eller Poison ind bare for en hurtig konvertering — så smæk den ind her og få JSON’en tilbage. Virker for en enkelt %Order{}-literal, en map, en keyword list, en indlejret kæde af structs, eller endda en liste af maps med forskellige former.
Outputtet matcher det, Jason.encode!/1 ville give dig, når en struct har @derive Jason.Encoder. Feltet __struct__ ryger, atom-nøgler bliver til JSON-string-nøgler, og indlejrede structs fladt ud til indlejrede JSON-objekter. Lister bliver JSON-arrays, nil bliver null, true/false går lige over, heltal forbliver heltal, floats forbliver floats.
Keyword lists ([key: value, other: 1]) bliver udsendt som JSON-objekter — den almindelige konvention i Elixir. Binary strings og charlists konverteres begge til JSON-strings. DateTime, Date, NaiveDateTime og Time udsendes som ISO-8601-strenge i henhold til RFC 3339. Tupler bliver JSON-arrays (samme fallback som Jason bruger med en custom encoder).
Sådan bruger du det
Tre trin. Virker for en enkelt-linjes map lige så godt som for et Phoenix-context-modul propfuldt af structs.
Indsæt din Elixir (eller prøv eksemplet)
Smid din kode i editoren til venstre. En struct-literal, en map, en keyword list, en indlejret struct eller en defstruct med en instans — alt sammen fint.
Lad %ModuleName{}-syntaks, pipes og defstruct-deklarationer stå som de er. Parseren forstår dem.
Tryk på Konverter
Klik på den grønne Konverter-knap. Værktøjet løber structen igennem, smider __struct__ væk, folder indlejrede structs ud og spytter JSON ud i ét hug.
Kopier JSON’en
Tag den indrykkede JSON fra højre panel. Smid den i en Phoenix API-test, en ExUnit-fixture, eller et delt schema til et GraphQL-endpoint.
Hvornår det virkelig gør en forskel
Fixtures til Phoenix-API
Du har et context-schema og vil have en JSON-fixture til en controller-test. Indsæt structen, gem JSON’en, færdig — ingen grund til at kompilere og encode i IEx.
Form på GraphQL-respons
Du bygger en <a href="https://hexdocs.pm/absinthe/" target="_blank" rel="noopener">Absinthe</a>-resolver og vil lige tjekke, hvilken JSON-form en given struct producerer, inden du kobler resolver-funktionen på.
Dokumentér Ecto-skemaer
En Ecto schema-struct er stort set en JSON-kontrakt. Konvertér til JSON én gang, commit som API-docs, hold i sync når schemaet ændrer sig.
Overlevering mellem sprog
Din Elixir-service sender data videre til en Python ML-pipeline. Indsæt en eksempel-struct for at se den JSON, holdet længere nede vil forbruge.
Almindelige spørgsmål
Matcher det Jason.encode!/1?
Det er målet. Structs mister __struct__, atom-nøgler bliver string-nøgler, indlejrede structs fladt ud til indlejrede objekter. Samme output som du ville få med @derive Jason.Encoder på hver struct i træet.
Hvordan håndteres atoms?
Atom-nøgler i en map bliver JSON-string-nøgler. Atom-værdier bliver JSON-strings med atom-navnet i (fx :active bliver "active") — samme opførsel som Jason.
Hvad med tupler?
Tupler bliver JSON-arrays ({1, 2, 3} → [1, 2, 3]). Strengt taget kræver Jason en custom encoder til tupler; værktøjet vælger den fornuftige default, så der ikke ryger data på gulvet.
Keyword lists vs maps — er der forskel?
Begge udsendes som JSON-objekter. En keyword list [name: "Ava", id: 1] og en map %{name: "Ava", id: 1} giver identisk JSON. Dubletter af nøgler i en keyword list beholder den første forekomst.
Hvordan håndteres DateTime og Decimal?
DateTime/Date/NaiveDateTime/Time bliver ISO-8601-strenge. Decimal-værdier udsendes som JSON-tal (eller strings, hvis du foretrækker sikkerheden ved numeric-string — afhænger af formen). Samme som du ville få fra Jason med de rigtige derived encoders.
Bliver min kode gemt?
Din kode sendes til backenden til konverteringen og bliver ikke gemt — vi logger ikke payloadet. Skift rigtige brugerdata eller hemmeligheder ud, før du indsætter.
Andre værktøjer du måske har brug for
Elixir to JSON spiller godt sammen med resten af værktøjskassen: