Perl zu JSON Konverter
Füge einen Perl Hash Ref oder Array Ref ein. Du bekommst sauberes JSON zurück.
Was das Tool macht
Wenn du schon mal vor einem tief verschachtelten Perl Hash Ref gesessen und das äquivalente JSON von Hand geschrieben hast, kennst du den Schmerz — => vs :, quoted keys, escapete Strings, das ganze Programm. Füge das Perl hier ein und bekomme gültiges JSON zurück, ohne irgendetwas umzuschreiben. Einzelne {...} Hash Refs, eine Kette aus my $x = {...}; my $y = [...]; Deklarationen, oder etwas mit fünf Ebenen Array Refs in Hash Refs in weiteren Hash Refs — alles geht.
Es entspricht dem, was du von JSON::PP oder Cpanel::JSON::XS mit canonical => 1 bekommen würdest. Hash Refs werden zu JSON Objekten, Array Refs zu Arrays, undef wird zu null, Zahlen bleiben Zahlen, Strings bleiben Strings. Die bekannte Unschärfe in der Perl-Dokumentation zwischen "1" und 1 wird wie üblich aufgelöst — sieht es numerisch aus, kommt es als JSON-Zahl raus.
Blessed References (die Perl-Variante von Objekten) werden auf ihren zugrundeliegenden Hash Ref ausgepackt, sodass bless { ... }, "Order" als normales JSON-Objekt mit denselben Keys rauskommt. Die Sentinel-Werte JSON::true, JSON::false und JSON::null werden in ihre JSON-Gegenstücke umgewandelt. Mehrere Top-Level-Deklarationen landen als Keys im JSON-Output, benannt nach der Variable.
So benutzt du es
Drei Schritte. Läuft gleich, egal ob du einen kleinen Hash Ref oder einen kompletten Config-Dump einfügst.
Perl einfügen (oder das Beispiel probieren)
Kipp dein Perl so wie es ist in den linken Editor. Ein Hash Ref, ein Array Ref, mehrere Deklarationen oder ein blessed Objekt — alles okay. Klick Beispiel laden, wenn du ein realistisches Beispiel sehen willst.
Lass die Reference-Syntax in Ruhe — \%hash, \@array, {...}, [...]. Der Parser versteht alles davon.
Konvertieren drücken
Klick auf den grünen Konvertieren-Button. Das Tool läuft durch die Perl-Struktur, löst Referenzen auf und baut das JSON in einem Durchgang.
JSON kopieren
Das rechte Panel zeigt eingerücktes JSON, bereit für einen API-Payload, eine Fixture-Datei oder einen CPAN-Modul-Test. Kopieren und weiter.
Wann das wirklich hilft
Weg von Storable oder Data::Dumper
Du hast jahrelange Legacy-Dumps von Perl-Hashes und musst die an eine moderne API übergeben — JSON ist die Lingua franca. Einfügen und sauberes JSON kriegen, ohne einen Encoder zu schreiben.
REST-Endpoint aus einem Perl-Skript bedienen
Dein Cronjob baut einen Hash Ref aus einer DB-Query. Bevor du den auf ein REST-API loslässt, füg ihn hier ein und prüfe, ob die JSON-Form zu dem passt, was der Server erwartet.
Test-Fixtures schreiben
Nimm einen Hash Ref direkt aus einem Perl-Modul-Test, konvertiere ihn zu JSON und leg ihn als .json-Fixture für sprachübergreifende Tests ab.
Config mit Nicht-Perl-Leuten teilen
Eine Perl-Config-Datei benutzt überall Hash Refs. Wandle sie in JSON um, damit das Node-, Go- oder Python-Team sie lesen kann, ohne Perl zu installieren.
Häufige Fragen
Kommt es mit blessed Objekten klar?
Ja. Ein blessed Hash Ref (z. B. bless { id => 1 }, "Order") wird als sein zugrundeliegender Hash Ref behandelt — der Klassenname fliegt raus und die Keys/Values kommen als normales JSON-Objekt durch. Das entspricht dem Verhalten von JSON::PP mit convert_blessed.
Was ist mit <code>undef</code>, <code>JSON::true</code>, <code>JSON::false</code>?
undef wird zu JSON null. JSON::true / \1 wird zu true, JSON::false / \0 wird zu false. Das sind die Standard-Boolean-Konventionen von Cpanel::JSON::XS.
Kann ich <code>Data::Dumper</code>-Output einfügen?
Ja — Data::Dumper-Output (die $VAR1 = {...};-Form) wird sauber geparst. Das führende $VAR1 = wird als Variablenname gewertet und zum äußeren Key.
Wie werden Zahlen vs. Strings behandelt?
Perl ist mit dem Unterschied locker. Der Konverter folgt der üblichen Regel: nackte numerische Literale (42, 3.14) werden JSON-Zahlen, alles mit Quotes ("42") bleibt ein JSON-String. Wenn du einen String brauchst, der wie eine Zahl aussieht, setz ihn in Quotes.
Wird mein Code gespeichert?
Dein Code geht zum Backend für die Konvertierung und wird nicht persistiert — wir loggen den Payload nicht. Falls der Hash Ref echte Credentials enthält, tausch sie vor dem Einfügen aus.
Was passiert, wenn ich mehrere Hash Refs einfüge?
Jedes my $name = {...}; auf Top-Level wird zu einem Key im Output-JSON, benannt nach der Variable. Anonyme Strukturen bekommen "_1", "_2" usw. Nichts wird still fallen gelassen.
Weitere Tools, die du brauchen könntest
Perl zu JSON passt gut zum Rest des Werkzeugkastens: