Konwerter Perl na JSON
Wklej Perlowy hash ref albo array ref. Odbierz czysty JSON.
Co robi to narzędzie
Jeśli kiedykolwiek wpatrywałeś się w głęboko zagnieżdżony hash ref w Perlu i próbowałeś napisać odpowiadający mu JSON ręcznie, znasz ten ból — => vs :, cudzysłowy przy kluczach, escape’owane stringi, cały pakiet. Wklej Perla tutaj, a dostaniesz poprawny JSON bez pisania niczego od nowa. Radzi sobie z pojedynczym hash refem {...}, ciągiem deklaracji my $x = {...}; my $y = [...];, albo czymś na pięć poziomów z array refami w hash refach w kolejnych hash refach.
Wynik pokrywa się z tym, co dostałbyś z JSON::PP lub Cpanel::JSON::XS z canonical => 1. Hash refy stają się obiektami JSON, array refy tablicami, undef zamienia się w null, liczby zostają liczbami, stringi zostają stringami. Klasyczna niejednoznaczność z dokumentacji Perla między "1" a 1 rozstrzygana jest jak zwykle — jeśli wygląda na liczbę, idzie jako liczba JSON.
Blessed reference (perlowa wersja obiektów) są rozpakowywane do leżącego pod spodem hash refa, więc bless { ... }, "Order" wychodzi jako zwykły obiekt JSON z tymi samymi kluczami. Wartości sentinelowe JSON::true, JSON::false i JSON::null konwertują się do swoich odpowiedników w JSON-ie. Wiele deklaracji najwyższego poziomu trafia do wyjściowego JSON-a jako klucze nazwane po zmiennej.
Jak używać
Trzy kroki. Działa tak samo, czy wklejasz mały hash ref, czy cały dump konfiga.
Wklej swojego Perla (albo spróbuj przykładu)
Wrzuć swojego Perla do lewego edytora bez zmian. Hash ref, array ref, kilka deklaracji albo blessed object — wszystko w porządku. Kliknij Wczytaj przykład, jeśli chcesz zobaczyć coś realistycznego.
Zostaw składnię referencji w spokoju — \%hash, \@array, {...}, [...]. Parser rozumie wszystkie.
Kliknij Konwertuj
Kliknij zielony przycisk Konwertuj. Narzędzie przechodzi po strukturze Perla, rozwiązuje referencje i buduje JSON w jednym przebiegu.
Skopiuj JSON
Prawy panel pokazuje wcięty JSON, gotowy do payloadu API, pliku fixture albo testu modułu CPAN. Skopiuj i lecisz dalej.
Kiedy to naprawdę ratuje skórę
Odejście od Storable albo Data::Dumper
Masz lata legacy dumpów perlowych hashy i musisz je przekazać do nowoczesnego API — JSON to lingua franca. Wklejasz i dostajesz porządny JSON bez pisania encodera.
Karmienie endpointa REST ze skryptu Perla
Twój cron buduje hash ref z zapytania do bazy. Zanim odpalisz to na REST API, wklej tutaj, żeby sprawdzić, czy kształt JSON-a pasuje do tego, czego spodziewa się serwer.
Pisanie fixtur testowych
Weź hash ref prosto z testu modułu Perla, skonwertuj na JSON, wrzuć do pliku .json fixture do testów cross-language.
Dzielenie się configiem z devami spoza Perla
Plik konfiga w Perlu wszędzie używa hash refów. Konwertuj na JSON, żeby zespół Node, Go albo Pythona mógł go odczytać bez instalowania Perla.
Najczęstsze pytania
Czy obsługuje blessed objects?
Tak. Blessed hash ref (np. bless { id => 1 }, "Order") jest traktowany jak jego bazowy hash ref — nazwa klasy leci, a klucze i wartości wychodzą jako zwykły obiekt JSON. Zgadza się to z zachowaniem JSON::PP z convert_blessed.
A co z <code>undef</code>, <code>JSON::true</code>, <code>JSON::false</code>?
undef zamienia się w JSON-owe null. JSON::true / \1 staje się true, JSON::false / \0 staje się false. To standardowe konwencje booli z Cpanel::JSON::XS.
Czy mogę wkleić wyjście <code>Data::Dumper</code>?
Tak — wyjście Data::Dumper (postać $VAR1 = {...};) parsuje się bez problemu. Wiodące $VAR1 = jest traktowane jako nazwa zmiennej i staje się zewnętrznym kluczem.
Jak rozróżniane są liczby i stringi?
Perl jest rozluźniony w tej kwestii. Konwerter trzyma się typowej reguły: gołe literały liczbowe (42, 3.14) stają się liczbami JSON, a cokolwiek w cudzysłowach ("42") zostaje stringiem JSON. Jeśli potrzebujesz stringa wyglądającego jak liczba, otocz go cudzysłowami.
Czy mój kod jest zapisywany?
Twój kod trafia do backendu tylko na czas konwersji i nie jest zapisywany na stałe — nie logujemy payloadu. Jeśli hash ref zawiera prawdziwe credentiale, wymień je przed wklejeniem.
Co jeśli wkleję kilka hash refów?
Każdy my $name = {...}; z najwyższego poziomu staje się kluczem w wyjściowym JSON-ie, nazwanym po zmiennej. Struktury anonimowe dostają "_1", "_2" itd. Nic nie jest po cichu wyrzucane.
Inne narzędzia, które mogą się przydać
Perl do JSON-a dobrze pasuje do reszty zestawu narzędzi: