Klistra in Perl till vänster och klicka "Konvertera" — vi gör om det till JSONKlistra in Perl-kod

Vad verktyget gör

Om du någon gång har stirrat på en djupt nästlad Perl hash ref och försökt skriva motsvarande JSON för hand vet du hur jobbigt det är — => mot :, citerade nycklar, escape:ade strängar, hela paketet. Klistra in Perl här så får du tillbaka giltig JSON utan att skriva om något. Det klarar en enstaka {...}-hash ref, en kedja av my $x = {...}; my $y = [...];-deklarationer, eller något fem nivåer djupt med array refs i hash refs i ytterligare hash refs.

Det matchar det du skulle få av JSON::PP eller Cpanel::JSON::XS med canonical => 1. Hash refs blir JSON-objekt, array refs blir arrayer, undef blir null, siffror förblir siffror och strängar förblir strängar. Den klassiska otydligheten i Perl-dokumentationen mellan "1" och 1 löses på vanligt sätt — ser det numeriskt ut skickas det ut som ett JSON-tal.

Blessed references (Perls variant av objekt) packas upp till den underliggande hash ref:en, så bless { ... }, "Order" kommer ut som ett vanligt JSON-objekt med samma nycklar. Sentinelvärdena JSON::true, JSON::false och JSON::null konverteras till sina JSON-motsvarigheter. Flera deklarationer på toppnivå hamnar som nycklar i JSON-utdatan, namngivna efter variabeln.

Så använder du det

Tre steg. Fungerar likadant oavsett om du klistrar in en liten hash ref eller en hel config-dump.

1

Klistra in din Perl (eller testa exemplet)

Släpp din Perl rakt av i vänstra editorn. En hash ref, en array ref, flera deklarationer eller ett blessed object — allt går bra. Klicka Ladda exempel om du vill se ett realistiskt fall.

Låt referenssyntaxen vara — \%hash, \@array, {...}, [...]. Parsern förstår allt.

2

Tryck Konvertera

Klicka på den gröna Konvertera-knappen. Verktyget går igenom Perl-strukturen, löser referenser och bygger JSON i en enda pass.

3

Kopiera JSON

Högra panelen visar indenterad JSON, redo för en API-payload, en fixture-fil eller ett CPAN-modultest. Kopiera och gå vidare.

När det faktiskt kommer väl till pass

Bort från Storable eller Data::Dumper

Du har flera års gamla Perl-hashdumpar och måste skicka dem vidare till ett modernt API — JSON är lingua franca. Klistra in och få ordentlig JSON utan att skriva en encoder.

Mata en REST-endpoint från ett Perl-skript

Ditt cron-jobb bygger en hash ref från en databasfråga. Innan du skjuter den mot ett REST-API, klistra in här och kontrollera att JSON-formen stämmer med vad servern förväntar sig.

Skriva testfixtures

Ta en hash ref direkt från ett Perl-modultest, konvertera till JSON, släng in den i en .json-fixture för tester mellan olika språk.

Dela config med utvecklare som inte kör Perl

En Perl-configfil använder hash refs överallt. Konvertera till JSON så att Node-, Go- eller Python-teamet kan läsa den utan att installera Perl.

Vanliga frågor

Hanterar den blessed objects?

Ja. En blessed hash ref (t.ex. bless { id => 1 }, "Order") behandlas som den underliggande hash ref:en — klassnamnet ryker och nycklarna/värdena kommer ut som ett vanligt JSON-objekt. Det matchar hur JSON::PP beter sig med convert_blessed.

Vad händer med <code>undef</code>, <code>JSON::true</code>, <code>JSON::false</code>?

undef blir JSON null. JSON::true / \1 blir true, JSON::false / \0 blir false. Det är standard-booleanerna från Cpanel::JSON::XS.

Kan jag klistra in <code>Data::Dumper</code>-utdata?

Ja — utdata från Data::Dumper (formen $VAR1 = {...};) parsas utan problem. Det inledande $VAR1 = tas som variabelnamn och blir den yttre nyckeln.

Hur hanteras siffror mot strängar?

Perl är lite slapp med skillnaden. Konverteraren följer den vanliga regeln: bara numeriska literaler (42, 3.14) blir JSON-tal, och allt inom citattecken ("42") förblir en JSON-sträng. Behöver du en sträng som ser numerisk ut, sätt citat runt den.

Sparas min kod?

Din kod går till backenden för konverteringen och sparas inte — vi loggar inte payloaden. Om hash ref:en innehåller riktiga credentials, byt ut dem innan du klistrar in.

Vad händer om jag klistrar in flera hash refs?

Varje toppnivå-my $name = {...}; blir en nyckel i JSON-utdatan, uppkallad efter variabeln. Anonyma strukturer får "_1", "_2" och så vidare. Inget försvinner i det tysta.

Andra verktyg du kan behöva

Perl till JSON går bra ihop med resten av verktygslådan: