Python'dan JSON'a Dönüştürücü
Python dict, dataclass veya Pydantic modellerini yapıştırın. Temiz JSON geri alın.
Bu araç ne yapar
Bir API çağrısı, test fixture'ı veya dokümantasyon için Python dict veya dataclass'ı JSON payload'una çevirmek zorunda kaldıysanız, bunun ne kadar çabuk sıkıcılaştığını bilirsiniz — tırnakları çevirmek gerekiyor, True/False true/false oluyor, None null oluyor, datetime/Decimal değerlerini elle serialize etmek gerekiyor. Python'ı buraya yapıştırın ve json.dumps veya Pydantic'in .model_dump_json() çağrısının üreteceği ile tıpatıp aynı geçerli JSON'u alın — aradaki glue kodunu siz yazmak zorunda kalmadan.
Bu sadece string-replace değil. Dönüştürücü Python'ın serialization sırasında gerçekten ne yaptığını anlar: tek tırnaklı string'ler çift tırnaklı olur, tuple'lar JSON dizilerine dönüşür, set ve frozenset de dizilere çevrilir, datetime ve date değerleri RFC 8259'a uygun ISO-8601 string'leri olarak çıkar, Decimal number'a düşer ve Enum üyeleri .value'sunu verir. İç içe objeler yerinde açılır, yani içinde başka dataclass listesi olan bir dataclass temiz round-trip yapar.
Pydantic modelleri (hem v1 hem v2) destekleniyor. Field(alias=...) ile ayarlanan alan alias'ları çıktıdaki key'leri yeniden adlandırır, None olan Optional alanlar null olarak korunur ve Literal/Union tipleri runtime değeriyle yayılır. İsterseniz birden fazla class içeren komple bir modül yapıştırın — her biri top-level entry olarak çıkar.
Nasıl kullanılır
Üç adım. İki satırlık bir dict yapıştırsanız da 300 satırlık bir modül yapıştırsanız da aynı şekilde çalışır.
Python'ınızı yapıştırın (veya örneği deneyin)
Python'ı olduğu gibi sol editöre atın. Dict literal, dataclass tanımı + instance, Pydantic model veya iç içe tiplerle birden fazla class — hepsi olur. Gerçekçi bir input'un nasıl göründüğünü görmek için Load Sample'a basın.
Import'ları veya decorator'ları silmenize gerek yok. PEP 8 formatlamasını, type hint'leri ve dataclass söz dizimini olduğu gibi bırakın.
Dönüştür'e basın
Yeşil Convert butonuna tıklayın. Araç Python'ı okur, obje grafiğini kurar ve json.dumps'ın yapacağı gibi serialize eder — okunabilirlik için girintileme ile. Çalışırken kısa bir loading göstergesi görünür.
JSON'u kopyalayın
JSON spec'ine göre geçerli, pretty-printed JSON sağdaki panele dolar. Request body'nize, pytest fixture'ınıza, FastAPI OpenAPI örneğinize veya config dosyanıza kopyalayın.
Bu gerçekten ne zaman işe yarar
API request fixture'ları
Pydantic request modeliniz var ve Postman, curl ya da Swagger örneği için örnek bir JSON body'ye ihtiyacınız var. Modeli yapıştırın, JSON'u alın, tamam.
Pytest ve unit-test verisi
Test dosyanızdaki bir dataclass instance'ını entegrasyon testleri veya snapshot karşılaştırmaları için JSON seed dosyasına çevirin — custom encoder gerekmez.
Config dosyası iskeleti
Birkaç düzine alanı olan settings dataclass'ı düzenlenmeye hazır bir JSON şablonuna dönüşür, onuncu kez parantez yazmak zorunda kalmazsınız.
Dokümanı kodla senkron tutma
README veya API referansı için JSON örneklerini zaten sahip olduğunuz gerçek modellerden üretin, böylece dokümantasyon kodla ayrışamaz.
Sık sorulan sorular
Pydantic v1 ve v2 ile çalışıyor mu?
Evet. İkisi de destekleniyor — Field(alias=...), model_config, Field(default_factory=...) ve iç içe modeller dahil. Alias'lar çıktıdaki key'leri yeniden adlandırır, aynen Pydantic'in kendisinin yapacağı gibi.
datetime, Decimal ve UUID nasıl ele alınıyor?
datetime, date ve time ISO-8601 string'leri olarak çıkar. Decimal JSON number'a düşer (tırnaksız). UUID standart hex string olur. bytes base64'lenir. Bunlar custom encoder bağladığınızda Python json modülü'ndeki geleneklerle örtüşür.
Peki Enum, Literal ve Optional?
Enum üyeleri .value'sunu verir. Literal["a", "b"] runtime string'i verir. None olan Optional[X] alanları atılmak yerine JSON null olarak gelir — böylece çıktının şekli type hint'lerle örtüşür.
Birden fazla class içeren bir modül yapıştırabilir miyim?
Evet. Modüldeki instance'ı olan her top-level class JSON'da kendi entry'si olarak çıkar. İç içe dataclass ve Pydantic modelleri yerinde açılır, parent class'lardan kalıtılan alanlar da dahildir.
Kodum bir yerde saklanıyor mu?
Kod yalnızca dönüştürülmek üzere backend'e gönderiliyor. Loglamıyor veya saklamıyoruz. Her online araçta olduğu gibi, yapıştırdığınız şey gerçekten hassassa önce bir göz gezdirin.
Python'da tuhaf bir şey varsa — lambda, generator, file handle?
Serialize edilemeyen değerler (function'lar, generator'lar, açık socket'ler) tüm dönüşümü bozmak yerine null olarak çıkar. Kaynakta syntax error varsa, önce barizlerini düzeltin — parser stil tuhaflıklarına müsamahalı ama bozuk kodu çalıştıramaz.
İhtiyacınız olabilecek diğer araçlar
Python'dan JSON'a bulmacanın bir parçası. Yanında iyi giden araçlar şunlar: