Conversor de Elixir a JSON
Pega un struct o un map de Elixir. Recibes JSON.
Qué hace esta herramienta
Si tienes un struct de Elixir y quieres JSON sin arrastrar Jason ni Poison solo para una conversión rápida, pégalo aquí y recibes el JSON. Funciona con un literal %Order{}, un map, una keyword list, una cadena anidada de structs, o incluso una lista de maps con formas distintas.
La salida coincide con lo que te daría Jason.encode!/1 una vez que un struct tiene @derive Jason.Encoder. El campo __struct__ se descarta, las claves atom pasan a ser strings JSON, y los structs anidados se aplanan en objetos JSON anidados. Las listas se vuelven arrays JSON, nil se vuelve null, true/false pasan tal cual, los enteros se quedan enteros y los floats se quedan floats.
Las keyword lists ([key: value, other: 1]) se emiten como objetos JSON — la convención habitual en Elixir. Los binary strings y las charlists se convierten a strings JSON. DateTime, Date, NaiveDateTime y Time salen como strings ISO-8601 según RFC 3339. Las tuplas se vuelven arrays JSON (el mismo fallback que usa Jason con un encoder personalizado).
Cómo se usa
Tres pasos. Vale tanto para un map de una línea como para un módulo de contexto Phoenix lleno de structs.
Pega tu Elixir (o prueba el ejemplo)
Suelta tu código en el editor de la izquierda. Un literal de struct, un map, una keyword list, un struct anidado o un defstruct con una instancia — todo sirve.
Deja la sintaxis %ModuleName{}, los pipes y las declaraciones defstruct tal cual. El parser los entiende.
Pulsa Convertir
Haz clic en el botón verde Convertir. La herramienta recorre el struct, descarta __struct__, expande los structs anidados y emite JSON de una pasada.
Copia el JSON
Toma el JSON indentado del panel derecho. Úsalo en un test de API de Phoenix, en una fixture de ExUnit o en un esquema compartido para un endpoint GraphQL.
Cuándo te saca de apuros
Fixtures para APIs Phoenix
Tienes un schema de contexto y quieres una fixture JSON para un test de controlador. Pega el struct, guarda el JSON y listo — sin compilar ni codificar en IEx.
Forma de la respuesta GraphQL
Estás montando un resolver de <a href="https://hexdocs.pm/absinthe/" target="_blank" rel="noopener">Absinthe</a> y quieres comprobar la forma JSON que produce un struct antes de cablear la función del resolver.
Documentar schemas Ecto
Un struct de schema Ecto es básicamente un contrato JSON. Conviértelo una vez, súbelo como documentación de la API y mantenlo sincronizado cuando cambie el schema.
Pasar datos entre lenguajes
Tu servicio en Elixir le pasa datos a un pipeline de ML en Python. Pega un struct de muestra para ver el JSON que consumirá el equipo del otro lado.
Preguntas habituales
¿Coincide con Jason.encode!/1?
Ese es el objetivo. Los structs pierden __struct__, las claves atom se vuelven strings y los structs anidados se aplanan en objetos anidados. La misma salida que obtendrías con @derive Jason.Encoder en cada struct del árbol.
¿Cómo se tratan los atoms?
Las claves atom de un map se vuelven strings JSON. Los valores atom se vuelven strings JSON con el nombre del atom (p. ej. :active pasa a "active") — el mismo comportamiento que Jason.
¿Y las tuplas?
Las tuplas pasan a arrays JSON ({1, 2, 3} → [1, 2, 3]). Estrictamente hablando, Jason necesita un encoder personalizado para tuplas; la herramienta opta por el default con sentido común para que no se te pierdan datos.
Keyword lists y maps — ¿alguna diferencia?
Ambos salen como objetos JSON. Una keyword list [name: "Ava", id: 1] y un map %{name: "Ava", id: 1} producen JSON idéntico. Si hay claves duplicadas en la keyword list, se queda la primera.
¿Cómo se tratan DateTime y Decimal?
DateTime/Date/NaiveDateTime/Time salen como strings ISO-8601. Los valores Decimal se emiten como números JSON (o como strings si prefieres la seguridad de un string numérico — depende del formato). Lo mismo que obtendrías con Jason y los encoders adecuados derivados.
¿Se guarda mi código?
Tu código se envía al backend para la conversión y no se persiste — no registramos el payload. Quita cualquier dato real de usuario o secretos antes de pegar.
Otras herramientas que te pueden servir
Elixir to JSON combina bien con el resto del kit: