Indsæt Perl til venstre og klik "Konverter" — vi laver det om til JSONIndsæt Perl-kode

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.

1

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.

2

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.

3

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: