Elixir links einfügen und auf "Konvertieren" klicken — wir machen JSON drausElixir-Code einfügen

Was das Tool macht

Wenn du ein Elixir-Struct hast und JSON willst, ohne dir Jason oder Poison nur für eine kurze Konvertierung ans Bein zu binden, fügst du es hier ein und kriegst das JSON zurück. Klappt mit einem einzelnen %Order{}-Literal, einem Map, einer Keyword-List, einer verschachtelten Struct-Kette oder sogar einer Liste aus Maps mit unterschiedlichen Shapes.

Die Ausgabe entspricht dem, was Jason.encode!/1 liefert, sobald ein Struct @derive Jason.Encoder hat. Das Feld __struct__ fliegt raus, Atom-Keys werden zu JSON-String-Keys, und verschachtelte Structs werden zu verschachtelten JSON-Objekten. Listen werden zu JSON-Arrays, nil wird zu null, true/false werden direkt übernommen, Integer bleiben Integer, Floats bleiben Floats.

Keyword-Lists ([key: value, other: 1]) werden als JSON-Objekte ausgegeben — die übliche Elixir-Konvention. Binary-Strings und Charlists werden beide zu JSON-Strings. DateTime, Date, NaiveDateTime und Time kommen als ISO-8601-Strings gemäß RFC 3339 raus. Tupel werden zu JSON-Arrays (derselbe Fallback, den Jason mit einem Custom Encoder nutzt).

So benutzt du es

Drei Schritte. Funktioniert für einen einzeiligen Map genauso wie für ein Phoenix-Context-Modul voller Structs.

1

Dein Elixir einfügen (oder das Beispiel probieren)

Kippe deinen Code in den linken Editor. Ein Struct-Literal, ein Map, eine Keyword-List, ein verschachteltes Struct oder ein defstruct mit einer Instanz — alles okay.

Lass die %ModuleName{}-Syntax, Pipes und defstruct-Deklarationen so, wie sie sind. Der Parser versteht das.

2

Auf Konvertieren klicken

Klick auf den grünen Konvertieren-Button. Das Tool geht das Struct durch, verwirft __struct__, entfaltet verschachtelte Structs und liefert JSON in einem Rutsch.

3

JSON kopieren

Schnapp dir das eingerückte JSON aus dem rechten Panel. Packst du in einen Phoenix-API-Test, eine ExUnit-Fixture oder ein gemeinsames Schema für einen GraphQL-Endpoint.

Wann das wirklich was bringt

Phoenix-API-Fixtures

Du hast ein Context-Schema und willst eine JSON-Fixture für einen Controller-Test. Struct einfügen, JSON speichern, fertig — kein Umweg über IEx-Kompilieren und -Encoden.

GraphQL-Response-Shape

Du baust einen <a href="https://hexdocs.pm/absinthe/" target="_blank" rel="noopener">Absinthe</a>-Resolver und willst vorab prüfen, welche JSON-Form ein bestimmtes Struct produziert, bevor du die Resolver-Funktion verkabelst.

Ecto-Schemas dokumentieren

Ein Ecto-Schema-Struct ist im Grunde ein JSON-Vertrag. Einmal nach JSON konvertieren, als API-Doku commiten, synchron halten, wenn sich das Schema ändert.

Sprach-Grenzen überbrücken

Dein Elixir-Service reicht Daten an eine Python-ML-Pipeline weiter. Füg ein Sample-Struct ein, um das JSON zu sehen, das das nachgelagerte Team konsumieren wird.

Häufige Fragen

Passt das zu Jason.encode!/1?

Genau das ist das Ziel. Structs verlieren __struct__, Atom-Keys werden zu String-Keys, verschachtelte Structs werden zu verschachtelten Objekten. Dieselbe Ausgabe, die du mit @derive Jason.Encoder auf jedem Struct im Baum bekämst.

Wie werden Atoms behandelt?

Atom-Keys in einem Map werden zu JSON-String-Keys. Atom-Werte werden zu JSON-Strings mit dem Atom-Namen (z. B. :active wird zu "active") — dasselbe Verhalten wie bei Jason.

Und Tupel?

Tupel werden zu JSON-Arrays ({1, 2, 3}[1, 2, 3]). Streng genommen braucht Jason für Tupel einen Custom Encoder; das Tool wählt den vernünftigen Default, damit dir in der Ausgabe nichts fehlt.

Keyword-Lists vs. Maps — irgendein Unterschied?

Beide kommen als JSON-Objekte raus. Eine Keyword-List [name: "Ava", id: 1] und ein Map %{name: "Ava", id: 1} liefern identisches JSON. Doppelte Keys in einer Keyword-List behalten das erste Vorkommen.

Wie werden DateTime und Decimal behandelt?

DateTime/Date/NaiveDateTime/Time werden zu ISO-8601-Strings. Decimal-Werte kommen als JSON-Zahlen raus (oder als Strings, wenn du auf der sicheren Seite mit Numeric-Strings sein willst — je nach Fall). Dasselbe, was du mit Jason und den passenden derived Encodern bekommst.

Wird mein Code gespeichert?

Dein Code wird zum Backend geschickt und für die Konvertierung verarbeitet, aber nicht persistiert — wir loggen das Payload nicht. Echte Nutzerdaten oder Secrets vorm Einfügen lieber rausnehmen.

Andere Tools, die nützlich sein könnten

Elixir to JSON passt gut zum restlichen Werkzeugkasten: