Colle le Perl à gauche et clique sur « Convertir » — on te le transforme en JSONColle du code Perl

Ce que fait cet outil

Si tu as déjà fixé un hash ref Perl profondément imbriqué en essayant d'écrire le JSON équivalent à la main, tu connais la douleur — => vs :, les clés entre guillemets, les strings échappés, tout le tralala. Colle le Perl ici et tu récupères du JSON valide sans rien réécrire. Ça accepte un seul hash ref {...}, une suite de déclarations my $x = {...}; my $y = [...];, ou un truc à cinq niveaux avec des array refs dans des hash refs dans encore des hash refs.

Ça correspond à ce que tu obtiendrais de JSON::PP ou Cpanel::JSON::XS avec canonical => 1. Les hash refs deviennent des objets JSON, les array refs des tableaux, undef devient null, les nombres restent des nombres, les strings restent des strings. L'ambiguïté habituelle de la documentation Perl entre "1" et 1 est tranchée comme d'habitude — si ça ressemble à un nombre, ça sort en nombre JSON.

Les références blessed (la version Perl des objets) sont dépouillées jusqu'au hash ref sous-jacent, donc un bless { ... }, "Order" ressort en objet JSON plat avec les mêmes clés. Les valeurs sentinelles JSON::true, JSON::false et JSON::null sont converties en leurs équivalents JSON. Plusieurs déclarations au niveau racine finissent comme clés dans le JSON de sortie, nommées d'après la variable.

Comment t'en servir

Trois étapes. Pareil que tu colles un petit hash ref ou un dump complet de config.

1

Colle ton Perl (ou essaie l'exemple)

Largue ton Perl dans l'éditeur de gauche tel quel. Un hash ref, un array ref, plusieurs déclarations ou un objet blessed — aucun souci. Clique sur Charger l'exemple si tu veux voir un cas réaliste.

Laisse la syntaxe de référence telle quelle — \%hash, \@array, {...}, [...]. Le parser comprend tout.

2

Clique sur Convertir

Clique sur le bouton vert Convertir. L'outil parcourt la structure Perl, résout les références et construit le JSON en une passe.

3

Copie le JSON

Le panneau de droite affiche du JSON indenté, prêt pour un payload d'API, un fichier fixture ou un test de module CPAN. Copie et passe à autre chose.

Quand ça sert vraiment

Sortir de Storable ou Data::Dumper

Tu as des années de dumps de hashes Perl legacy et il faut les refiler à une API moderne — JSON est la langue commune. Colle et récupère du JSON propre sans écrire d'encoder.

Nourrir un endpoint REST depuis un script Perl

Ton cron construit un hash ref à partir d'une requête SQL. Avant de le balancer sur une API REST, colle-le ici pour vérifier que la forme du JSON correspond à ce que le serveur attend.

Écrire des fixtures de test

Prends un hash ref direct depuis un test de module Perl, convertis en JSON, dépose-le dans un fichier .json pour des tests multi-langages.

Partager une config avec des devs non-Perl

Un fichier de config Perl utilise des hash refs partout. Convertis en JSON pour que l'équipe Node, Go ou Python puisse le lire sans installer Perl.

Questions courantes

Ça gère les objets blessed ?

Oui. Un hash ref blessed (par ex. bless { id => 1 }, "Order") est traité comme son hash ref sous-jacent — le nom de classe est jeté et les clés/valeurs ressortent en objet JSON plat. Ça correspond au comportement de JSON::PP avec convert_blessed.

Et <code>undef</code>, <code>JSON::true</code>, <code>JSON::false</code> ?

undef devient null en JSON. JSON::true / \1 devient true, JSON::false / \0 devient false. Ce sont les conventions booléennes standard de Cpanel::JSON::XS.

Je peux coller la sortie de <code>Data::Dumper</code> ?

Oui — la sortie de Data::Dumper (la forme $VAR1 = {...};) se parse sans souci. Le $VAR1 = initial est traité comme nom de variable et devient la clé externe.

Comment sont gérés nombres vs strings ?

Perl est laxiste sur la différence. Le convertisseur suit la règle habituelle : les littéraux numériques nus (42, 3.14) deviennent des nombres JSON, et tout ce qui est entre guillemets ("42") reste un string JSON. Si tu veux un string qui ressemble à un nombre, mets-le entre guillemets.

Mon code est-il stocké ?

Ton code part vers le backend pour la conversion et n'est pas persisté — on ne log pas le payload. Si le hash ref contient de vrais credentials, change-les avant de coller.

Et si je colle plusieurs hash refs ?

Chaque my $name = {...}; au niveau racine devient une clé dans le JSON de sortie, nommée d'après la variable. Les structures anonymes reçoivent "_1", "_2", etc. Rien n'est jeté en silence.

Autres outils qui peuvent servir

Perl vers JSON va bien avec le reste de la boîte à outils :