Incolla Elixir a sinistra e clicca "Converti" — lo trasformiamo in JSONIncolla codice Elixir

Cosa fa questo tool

Se hai uno struct Elixir e vuoi JSON senza portarti dietro Jason o Poison solo per una conversione veloce, incollalo qui e ottieni il JSON. Va bene per un singolo literal %Order{}, un map, una keyword list, una catena annidata di struct, o persino una lista di map con forme diverse.

L'output corrisponde a quello che ti darebbe Jason.encode!/1 una volta che uno struct ha @derive Jason.Encoder. Il campo __struct__ viene tolto, le chiavi atom diventano chiavi stringa JSON, e gli struct annidati si appiattiscono in oggetti JSON annidati. Le liste diventano array JSON, nil diventa null, true/false passano uguali, gli interi restano interi, i float restano float.

Le keyword list ([key: value, other: 1]) escono come oggetti JSON — la convenzione classica in Elixir. Binary string e charlist si convertono entrambe in stringhe JSON. DateTime, Date, NaiveDateTime e Time vengono emesse come stringhe ISO-8601 secondo RFC 3339. Le tuple diventano array JSON (lo stesso fallback che Jason usa con un encoder custom).

Come si usa

Tre passaggi. Vale sia per un map su una riga sia per un modulo di contesto Phoenix pieno di struct.

1

Incolla il tuo Elixir (o prova l'esempio)

Butta il tuo codice nell'editor a sinistra. Un literal di struct, un map, una keyword list, uno struct annidato o un defstruct con istanza — tutto va bene.

Lascia la sintassi %ModuleName{}, le pipe e le dichiarazioni defstruct così come sono. Il parser le capisce.

2

Clicca Converti

Clicca sul pulsante verde Converti. Il tool scorre lo struct, toglie __struct__, espande gli struct annidati ed emette JSON in un solo passaggio.

3

Copia il JSON

Prendi il JSON indentato dal pannello di destra. Incollalo in un test di API Phoenix, in una fixture ExUnit, o in uno schema condiviso per un endpoint GraphQL.

Quando torna davvero utile

Fixture per API Phoenix

Hai un context schema e vuoi una fixture JSON per un test di controller. Incolla lo struct, salva il JSON, fatto — senza dover compilare e codificare in IEx.

Forma della response GraphQL

Stai scrivendo un resolver <a href="https://hexdocs.pm/absinthe/" target="_blank" rel="noopener">Absinthe</a> e vuoi controllare la forma JSON che produrrà un certo struct prima di cablare la funzione resolver.

Documentare schema Ecto

Uno struct di schema Ecto è di fatto un contratto JSON. Convertilo una volta, committalo come docs dell'API, tienilo in sync quando lo schema cambia.

Passaggio tra linguaggi

Il tuo servizio Elixir passa dati a una pipeline ML Python. Incolla uno struct di esempio per vedere il JSON che consumerà il team a valle.

Domande frequenti

Corrisponde a Jason.encode!/1?

È l'obiettivo. Gli struct perdono __struct__, le chiavi atom diventano chiavi stringa, gli struct annidati si appiattiscono in oggetti annidati. Lo stesso output che otterresti con @derive Jason.Encoder su ogni struct dell'albero.

Come vengono gestiti gli atom?

Le chiavi atom di un map diventano chiavi stringa JSON. I valori atom diventano stringhe JSON che contengono il nome dell'atom (es. :active diventa "active") — stesso comportamento di Jason.

E le tuple?

Le tuple diventano array JSON ({1, 2, 3}[1, 2, 3]). A rigore Jason richiede un encoder custom per le tuple; il tool sceglie il default più sensato per non farti perdere dati.

Keyword list vs map — c'è differenza?

Entrambi escono come oggetti JSON. Una keyword list [name: "Ava", id: 1] e un map %{name: "Ava", id: 1} producono lo stesso JSON. Se ci sono chiavi duplicate nella keyword list, resta la prima occorrenza.

Come vengono gestiti DateTime e Decimal?

DateTime/Date/NaiveDateTime/Time diventano stringhe ISO-8601. I valori Decimal vengono emessi come numeri JSON (o stringhe se preferisci la sicurezza del numeric-string — dipende dal caso). Lo stesso di ciò che otterresti con Jason e i relativi encoder derivati.

Il mio codice viene salvato?

Il tuo codice viene inviato al backend per la conversione e non viene persistito — non logghiamo il payload. Sostituisci dati reali di utenti o segreti prima di incollare.

Altri tool che potrebbero servirti

Elixir to JSON si sposa bene con il resto della cassetta degli attrezzi: