Perl til JSON-konverter
Indsæt en Perl hash ref eller array ref. Få ren JSON tilbage.
Hvad værktøjet gør
Hvis du nogensinde har stirret på en dybt nestet Perl hash ref og prøvet at skrive den tilsvarende JSON i hånden, kender du smerten — => mod :, nøgler i citationstegn, escaped strenge, det hele. Indsæt Perl her, og du får gyldig JSON tilbage uden at skrive noget om. Det håndterer en enkelt {...}-hash ref, en kæde af my $x = {...}; my $y = [...];-deklarationer, eller noget fem niveauer dybt med array refs i hash refs i flere hash refs.
Det matcher det, du ville få fra JSON::PP eller Cpanel::JSON::XS med canonical => 1. Hash refs bliver til JSON-objekter, array refs bliver til arrays, undef bliver til null, tal forbliver tal, og strenge forbliver strenge. Den klassiske tvetydighed i Perl-dokumentationen mellem "1" og 1 løses på sædvanlig vis — ligner det et tal, kommer det ud som et JSON-tal.
Blessed references (Perls udgave af objekter) pakkes ud til deres underliggende hash ref, så bless { ... }, "Order" kommer ud som et almindeligt JSON-objekt med de samme nøgler. Sentinelværdierne JSON::true, JSON::false og JSON::null konverteres til deres JSON-modstykker. Flere topniveau-deklarationer ender som nøgler i JSON-outputtet, navngivet efter variablen.
Sådan bruger du det
Tre trin. Virker det samme, om du indsætter en lille hash ref eller et helt config-dump.
Indsæt din Perl (eller prøv eksemplet)
Smid din Perl direkte ind i venstre editor. En hash ref, en array ref, flere deklarationer eller et blessed object — alt går an. Klik Indlæs eksempel, hvis du vil se et realistisk tilfælde.
Lad referencesyntaksen være — \%hash, \@array, {...}, [...]. Parseren forstår det hele.
Tryk Konverter
Klik på den grønne Konverter-knap. Værktøjet går igennem Perl-strukturen, løser referencer og bygger JSON i ét hug.
Kopier JSON
Højre panel viser indrykket JSON, klar til et API-payload, en fixture-fil eller en CPAN-modultest. Kopier og videre.
Når det faktisk er guld værd
Væk fra Storable eller Data::Dumper
Du har årevis af legacy Perl-hashdumps og skal sende dem videre til et moderne API — JSON er lingua franca. Indsæt og få ordentlig JSON uden at skrive en encoder.
Fodre et REST-endpoint fra et Perl-script
Dit cron-job bygger en hash ref fra en databaseforespørgsel. Inden du fyrer den af mod et REST-API, indsæt her for at verificere at JSON-formen matcher det, serveren forventer.
Skrive testfixtures
Tag en hash ref direkte fra en Perl-modultest, konverter til JSON, smid den i en .json-fixture til tests på tværs af sprog.
Dele config med udviklere der ikke bruger Perl
En Perl-configfil bruger hash refs overalt. Konverter til JSON, så Node-, Go- eller Python-teamet kan læse den uden at installere Perl.
Typiske spørgsmål
Håndterer den blessed objects?
Ja. En blessed hash ref (fx bless { id => 1 }, "Order") behandles som sin underliggende hash ref — klassenavnet ryger, og nøgler/værdier kommer ud som et almindeligt JSON-objekt. Det svarer til, hvordan JSON::PP opfører sig med convert_blessed.
Hvad med <code>undef</code>, <code>JSON::true</code>, <code>JSON::false</code>?
undef bliver JSON null. JSON::true / \1 bliver true, JSON::false / \0 bliver false. Det er standard boolean-konventionerne fra Cpanel::JSON::XS.
Kan jeg indsætte <code>Data::Dumper</code>-output?
Ja — output fra Data::Dumper (formen $VAR1 = {...};) parses uden problemer. Det indledende $VAR1 = opfattes som variabelnavn og bliver den yderste nøgle.
Hvordan håndteres tal vs strenge?
Perl er løs med forskellen. Konverteren følger den almindelige regel: nøgne numeriske literaler (42, 3.14) bliver til JSON-tal, og alt i citationstegn ("42") forbliver en JSON-streng. Har du brug for en streng, der ligner et tal, skal du sætte den i citationstegn.
Gemmes min kode?
Din kode går til backenden for at blive konverteret og gemmes ikke — vi logger ikke payloaden. Hvis hash ref:en indeholder rigtige credentials, så skift dem ud før du indsætter.
Hvad hvis jeg indsætter flere hash refs?
Hver topniveau-my $name = {...}; bliver en nøgle i JSON-outputtet, opkaldt efter variablen. Anonyme strukturer får "_1", "_2" osv. Intet bliver smidt væk i stilhed.
Andre værktøjer du måske har brug for
Perl til JSON spiller godt sammen med resten af værktøjskassen: