Perl’i sola yapıştır ve "Dönüştür"’e tıkla — biz JSON’a çeviririzPerl kodu yapıştır

Bu aracın işi

Derin iç içe bir Perl hash ref’ine bakıp karşılığı olan JSON’ı elle yazmaya çalıştıysan, o acıyı bilirsin — => ile : kavgası, tırnaklı anahtarlar, escape edilmiş string’ler, hepsi birden. Perl’i buraya yapıştır, hiçbir şeyi yeniden yazmadan geçerli JSON’ı geri al. Tek bir {...} hash ref’i, my $x = {...}; my $y = [...]; şeklinde sıralı bildirimler ya da hash ref içinde hash ref içinde array ref’lerden oluşan beş katmanlı bir yapı — hepsini kaldırır.

Çıktı, canonical => 1 ile JSON::PP veya Cpanel::JSON::XS’ten alacağınla birebir. Hash ref’ler JSON nesnesine, array ref’ler dizilere, undef null’a, sayılar sayı, string’ler string olarak kalır. Perl dokümantasyonundaki "1" ile 1 arasındaki klasik belirsizlik her zamanki gibi çözülür — sayı gibi görünüyorsa JSON sayısı olarak çıkar.

Blessed referanslar (Perl’deki nesne sürümü) alttaki hash ref’e kadar açılır, yani bless { ... }, "Order" aynı anahtarlara sahip düz bir JSON nesnesi olarak çıkar. JSON::true, JSON::false ve JSON::null sentinel değerleri JSON karşılıklarına dönüşür. Üst seviyede birden fazla bildirim varsa, değişken adıyla JSON çıktısında anahtar olurlar.

Nasıl kullanılır

Üç adım. Küçük bir hash ref yapıştırsan da bütün bir config dump’ı yapıştırsan da aynı şekilde çalışır.

1

Perl’ini yapıştır (veya örneği dene)

Perl’ini sol editöre olduğu gibi bırak. Bir hash ref, array ref, birden fazla bildirim ya da blessed nesne — hepsi olur. Gerçekçi bir örnek görmek istersen Örneği Yükle’ye tıkla.

Referans söz dizimine dokunma — \%hash, \@array, {...}, [...]. Parser hepsini anlar.

2

Dönüştür’e bas

Yeşil Dönüştür düğmesine tıkla. Araç Perl yapısını gezer, referansları çözer ve JSON’ı tek geçişte kurar.

3

JSON’ı kopyala

Sağ panel girintili JSON’ı gösterir; API payload’ı, fixture dosyası ya da CPAN modül testi için hazır. Kopyala, yoluna devam et.

Gerçekten işe yaradığı anlar

Storable veya Data::Dumper’dan çıkış

Yıllardır biriken legacy Perl hash dump’ların var ve bunları modern bir API’a teslim etmen gerek — JSON ortak dil. Encoder yazmadan yapıştır, düzgün JSON’ı al.

Perl script’ten bir REST endpoint’ini beslemek

Cron job’ın veritabanı sorgusundan bir hash ref üretiyor. REST API’a ateşlemeden önce buraya yapıştır ve JSON şeklinin sunucunun beklediğiyle eşleştiğini doğrula.

Test fixture’ları yazmak

Perl modül testinden bir hash ref’i direkt al, JSON’a çevir, diller arası testler için .json fixture dosyasına koy.

Perl kullanmayan ekiplerle config paylaşmak

Bir Perl config dosyası her yerde hash ref kullanır. JSON’a çevir ki Node, Go ya da Python ekibi Perl yüklemeden okuyabilsin.

Sık sorulanlar

Blessed nesnelerle başa çıkıyor mu?

Evet. Blessed bir hash ref (örn. bless { id => 1 }, "Order") alttaki hash ref gibi ele alınır — sınıf adı düşer ve anahtar/değerler düz bir JSON nesnesi olarak çıkar. Bu, convert_blessed ile JSON::PP’nin davranışıyla aynıdır.

<code>undef</code>, <code>JSON::true</code>, <code>JSON::false</code> ne oluyor?

undef JSON’daki null’a dönüşür. JSON::true / \1 true’a, JSON::false / \0 false’a dönüşür. Bunlar Cpanel::JSON::XS’in standart boolean uzlaşımlarıdır.

<code>Data::Dumper</code> çıktısını yapıştırabilir miyim?

Evet — Data::Dumper çıktısı ($VAR1 = {...}; biçimi) sorunsuz parse edilir. Baştaki $VAR1 = değişken adı olarak değerlendirilir ve dış anahtar olur.

Sayılar ile string’ler nasıl ayrılıyor?

Perl bu farkta oldukça gevşektir. Dönüştürücü bilinen kurala uyar: tırnaksız sayısal literaller (42, 3.14) JSON sayısı, tırnak içine alınmış her şey ("42") JSON string’i olarak kalır. Sayı gibi görünen bir string istiyorsan tırnak içine al.

Kodum saklanıyor mu?

Kodun yalnızca dönüştürme için backend’e gider ve kalıcı olarak tutulmaz — payload’ı loglamıyoruz. Hash ref gerçek kimlik bilgileri içeriyorsa yapıştırmadan önce değiştir.

Birden fazla hash ref yapıştırırsam ne olur?

Üst seviyedeki her my $name = {...};, değişken adıyla JSON çıktısında bir anahtar olur. Anonim yapılara "_1", "_2" gibi adlar verilir. Hiçbir şey sessizce atılmaz.

İşine yarayabilecek diğer araçlar

Perl’den JSON’a aracı, geri kalan araç çantasıyla iyi gider: