Colle ton Elixir à gauche et clique sur "Convertir" — on te le transforme en JSONColle du code Elixir

Ce que fait cet outil

Si tu as un struct Elixir et que tu veux du JSON sans embarquer Jason ou Poison juste pour une conversion rapide, colle-le ici et récupère le JSON. Ça marche pour un littéral %Order{}, un map, une keyword list, une chaîne de structs imbriqués, ou même une liste de maps aux formes différentes.

La sortie correspond à ce que Jason.encode!/1 te rendrait une fois qu'un struct a un @derive Jason.Encoder. Le champ __struct__ saute, les clés atom deviennent des clés string JSON, et les structs imbriqués s'aplatissent en objets JSON imbriqués. Les listes deviennent des arrays JSON, nil devient null, true/false passent tels quels, les entiers restent entiers, les floats restent floats.

Les keyword lists ([key: value, other: 1]) sortent comme des objets JSON — la convention habituelle en Elixir. Les binary strings et les charlists se convertissent tous deux en strings JSON. DateTime, Date, NaiveDateTime et Time sortent en ISO-8601 conformément à la RFC 3339. Les tuples deviennent des arrays JSON (le même fallback que Jason avec un encoder custom).

Comment l'utiliser

Trois étapes. Ça marche aussi bien pour un map sur une ligne que pour un module de contexte Phoenix bourré de structs.

1

Colle ton Elixir (ou essaie l'exemple)

Balance ton code dans l'éditeur de gauche. Un littéral de struct, un map, une keyword list, un struct imbriqué ou un defstruct avec une instance — tout passe.

Laisse la syntaxe %ModuleName{}, les pipes et les déclarations defstruct tels quels. Le parser les comprend.

2

Clique sur Convertir

Clique sur le bouton vert Convertir. L'outil parcourt le struct, vire __struct__, développe les structs imbriqués et sort du JSON en une passe.

3

Récupère le JSON

Prends le JSON indenté dans le panneau de droite. Balance-le dans un test d'API Phoenix, une fixture ExUnit ou un schéma partagé pour un endpoint GraphQL.

Quand ça rend vraiment service

Fixtures d'API Phoenix

Tu as un schema de contexte et tu veux une fixture JSON pour un test de contrôleur. Colle le struct, sauvegarde le JSON, terminé — pas besoin de compiler et d'encoder dans IEx.

Forme d'une réponse GraphQL

Tu construis un resolver <a href="https://hexdocs.pm/absinthe/" target="_blank" rel="noopener">Absinthe</a> et tu veux vérifier la forme JSON qu'un struct donné va produire avant de câbler la fonction resolver.

Documenter des schémas Ecto

Un struct de schéma Ecto, c'est grosso modo un contrat JSON. Convertis-le une fois, commit-le comme doc d'API, et garde-le à jour quand le schéma change.

Passerelle entre langages

Ton service Elixir refile des données à un pipeline ML Python. Colle un struct d'exemple pour voir le JSON que l'équipe en aval va consommer.

Questions fréquentes

Est-ce que ça correspond à Jason.encode!/1 ?

C'est la cible. Les structs perdent __struct__, les clés atom deviennent des clés string, les structs imbriqués s'aplatissent en objets imbriqués. La même sortie que tu aurais avec @derive Jason.Encoder sur chaque struct de l'arbre.

Comment les atoms sont-ils gérés ?

Les clés atom d'un map deviennent des clés string JSON. Les valeurs atom deviennent des strings JSON contenant le nom de l'atom (par exemple :active devient "active") — même comportement que Jason.

Et pour les tuples ?

Les tuples deviennent des arrays JSON ({1, 2, 3}[1, 2, 3]). À strictement parler, Jason a besoin d'un encoder custom pour les tuples ; l'outil choisit le default de bon sens pour ne pas perdre de données en route.

Keyword lists vs maps — une différence ?

Les deux sortent en objets JSON. Une keyword list [name: "Ava", id: 1] et un map %{name: "Ava", id: 1} produisent le même JSON. Les clés en double dans une keyword list gardent la première occurrence.

Comment sont gérés DateTime et Decimal ?

DateTime/Date/NaiveDateTime/Time sortent en strings ISO-8601. Les valeurs Decimal sortent en nombres JSON (ou en strings si tu préfères la sécurité du string numérique — ça dépend du contexte). Pareil que ce que te donnerait Jason avec les bons encoders dérivés.

Mon code est-il stocké ?

Ton code est envoyé au backend pour la conversion et n'est pas persisté — on ne logue pas le payload. Remplace toutes les données utilisateur réelles ou les secrets avant de coller.

Autres outils qui peuvent servir

Elixir to JSON s'associe bien avec le reste de la boîte à outils :