Ruby'den JSON'a Dönüştürücü
Ruby sınıflarını, hash'leri veya nesneleri yapıştırın. Temiz JSON alın.
Bu araç ne yapar
Bir sürü özelliği olan bir Ruby sınıfınız varsa ve bir test, bir API çağrısı veya bir fixture için JSON payload'una ihtiyacınız varsa, hash'i elle oluşturmak baş ağrısından başka bir şey değil. Ruby'yi buraya yapıştırın, her alanın korunduğu geçerli bir JSON geri alın. İster tek bir Order sınıfı, ister adreslerle birlikte iç içe bir Customer, ister Rails'ten model tanımlarıyla dolu bir dosya olsun, çıktı çalışma zamanında to_json'un vereceğiyle birebir aynı.
Dönüştürücü, Ruby'nin gerçekte nasıl serileştirdiğini bilir. json stdlib :symbol anahtarlarını string'e çevirir (çünkü JSON sadece string anahtar kabul eder), nil null olur ve Time / Date ISO-8601 string'i olarak çıkar. Sembol anahtarlı ve string anahtarlı hash'ler normalize edilir, karışık tipli diziler olduğu gibi kalır. İç içe örnekler — bir Order içindeki Address gibi — string'e çevrilmek yerine iç içe JSON nesnelerine genişletilir. Detaylar ruby-doc.org'da.
Bir gem'den veya Rails uygulamanızdan tam bir dosya yapıştırın, her üst seviye sınıf kendi JSON girdisi olarak çıkar, initialize'da atanan örnek değişkenleri de çıktıya dahil edilir. attr_accessor, attr_reader ve düz @ivars hepsi yakalanır. Parser bir Struct veya OpenStruct görürse, üyeleri aynı şekilde ele alır. Metotlar atlanır — JSON'a sadece veri girer.
Nasıl kullanılır
Üç adım. Birkaç satır da yapıştırsanız bir models/ klasörünün tamamını da yapıştırsanız aynı şekilde çalışır.
Ruby'nizi yapıştırın (veya örneği deneyin)
Ruby'nizi olduğu gibi sol editöre atın. Sınıf tanımı, hash literal, birden fazla sınıf veya .new örneği — hepsi olur. Önce gerçekçi bir örnek görmek istiyorsanız Örnek Yükle'ye tıklayın.
Kodu kısaltmanıza gerek yok — Ruby sözdizimini, require satırlarını ve yorumları olduğu gibi bırakın. Parser, veri olmayanı görmezden gelir. Uç durumlar için JSON stdlib dokümanları okumaya değer.
Dönüştür'e basın
Yeşil Dönüştür butonuna tıklayın. Araç Ruby'yi okur, her sınıfı ve özelliği korur ve JSON'u tek geçişte üretir. Çalışırken kısa bir yükleme göstergesi görürsünüz.
JSON'u kopyalayın
Sağ panel girintili, spec'e uyumlu JSON ile dolar. Postman isteğine, test fixture'ına, Rails seeds dosyasına veya API dokümanınıza kopyalayın.
Ne zaman gerçekten işe yarar
RSpec için test fixture'ları
20 özelliği olan bir Order model'iniz var ve bir dış servisi stub'lamak için JSON lazım. Sınıfı yapıştır, payload'u al, spec'ine koy.
Rails uygulamasına seed verme
Bir sürü <code>Product.new(...)</code> satırını db/seeds için veya staging data loader için bir JSON seed dosyasına çevirin — elle yazmaya gerek yok.
Modellerinizle eşleşen dokümanlar
Ruby sınıflarınızdan doğrudan README veya API referansı için JSON örnekleri üretin, böylece dokümanlar koddan asla kopmaz.
Serileştirme sorunlarını ayıklama
<code>to_json</code> tuhaf davrandığında, Ruby'yi buraya yapıştırıp beklenen JSON şeklini görün ve uygulamanızın gerçekten ne gönderdiğiyle karşılaştırın.
Sık sorulan sorular
Aynı anda birden fazla sınıf yapıştırabilir miyim?
Evet. Dosyanın tamamını yapıştırın. Her üst seviye sınıf kendi JSON girdisi olarak çıkar, iç içe sınıflar iç içe nesnelere genişletilir. Metotlar yok sayılır — çıktıya sadece örnek değişkenleri ve değerleri girer.
Semboller ve string anahtarlar nasıl işleniyor?
JSON'da sadece string anahtar vardır, bu yüzden :name "name" olur — json stdlib ile aynı davranış. Sembol ve string anahtarları karıştıran bir hash'iniz varsa, çıktıda ikisi de string'e normalize edilir.
Peki Time, Date ve BigDecimal?
Time ve DateTime ISO-8601 string'i olarak çıkar. Date ISO formatında tarih string'idir. BigDecimal JSON sayısına dönüşür. nil, null'dur. Range'ler ve regex'ler string'e çevrilir — kalan standart tipler Ruby'nin varsayılan to_json'unun yaptığı şekilde eşlenir.
Struct ve OpenStruct destekleniyor mu?
Evet. :name, :price üyeli bir Struct, bu anahtarlara sahip bir JSON nesnesi olarak serileştirilir. OpenStruct için de aynısı geçerli — dinamik özellikler yakalanıp çıktıya verilir.
Kodum saklanıyor mu?
Ruby'niz dönüştürme için backend'e gönderilir ve kalıcı olarak saklanmaz — payload'u loglamıyoruz. Tüm çevrimiçi araçlarda olduğu gibi, kod gerçekten hassassa, önce kendiniz bir göz atın.
Ya kodda metotlar veya bloklar varsa?
Metotlar ve bloklar atlanır — veri değil onlar. JSON'a sadece sınıf adı, initialize'dan gelen örnek değişkenleri ve literal değerler girer, bu sayede modelinizin geri kalanı yine tertemiz geçer.
İşinize yarayabilecek diğer araçlar
Ruby'den JSON'a sadece bir parça. Bunlar onunla iyi gider: