JSON'dan Python'a Dönüştürücü

Bir JSON örneğinden tarayıcınızda doğrudan Python dataclass'ları üretin.

Bu araç tamamen tarayıcınızda çalışır. Dosyalarınız hiçbir zaman bir sunucuya yüklenmez.

from __future__ import annotations
from dataclasses import dataclass
from typing import Any, List

@dataclass
class Root:
    name: str
    age: int
    active: bool
    tags: List[str]
    address: Address


@dataclass
class Address:
    street: str
    zip: str

Bu dönüştürücü ne yapar?

Bir JSON değerini okuyup eşleşen Python dataclass'ları üretir: örnekte bulunan her nesne şekli için bir `@dataclass`, her alan tuttuğu değerden tip ipucu alır.

Nasıl kullanılır?

Editöre bir JSON nesnesi, dizisi veya temel değer yapıştırın. Hemen bir `Root` dataclass'ı (nesne olmayan kök için bir type alias) ve iç içe geçmiş her nesne şekli için ek bir dataclass görünür.

Örnek

Bir `name` metni ve iç içe bir `address` nesnesi içeren bir nesne, `class Root: name: str; address: Address` ile birlikte geldiği anahtardan adlandırılmış ayrı bir `class Address` üretir.

Tip eşlemesi

Metinler `str`, tam sayılar `int`, ondalıklı sayılar `float`, boolean'lar `bool` ve diziler `List[ElementType]` olur. Geçerli bir Python tanımlayıcısı olmayan JSON anahtarları (örneğin tire içerenler) otomatik olarak güvenli bir ada dönüştürülür.

İç içe nesneler ve listeler

Her iç içe nesne, geldiği anahtardan üretilmiş kendi dataclass'ını alır. Çıktı `from __future__ import annotations` ile başlar, böylece dataclass'lar tanımlandıkları sıradan bağımsız olarak birbirine referans verebilir.

Sınırlamalar

Üretilen dataclass'lar yalnızca sağlanan tek JSON örneğini tanımlar ve bir dict'ten geri oluşturmanın bir yolunu içermez (`from_dict`/`to_dict` yardımcıları yok) — ihtiyacınız varsa serileştirmeyi kendiniz eklemeniz gerekir. Nesne dizileri yalnızca ilk öğelerinden tiplendirilir.

Gizlilik

Ayrıştırma ve kod üretimi tamamen tarayıcınızda yerel çalışır. Yapıştırdığınız JSON ve ürettiğiniz Python asla yüklenmez.

Sıkça Sorulan Sorular

Çıktı neden "from __future__ import annotations" içeriyor?
Bu, üretilen dataclass'ların, tırnaklı ileri referanslara ihtiyaç duymadan, hangi sırada tanımlandıklarından bağımsız olarak birbirlerinin tiplerine referans vermesini sağlar.
Bu, tire veya boşluk içeren JSON anahtarlarını işler mi?
Evet — geçerli bir Python tanımlayıcısı olmayan bir anahtar otomatik olarak güvenli bir ada dönüştürülür (örneğin first-name, first_name olur), ancak üretilen alan görsel olarak orijinal anahtarla tam eşleşmeyebilir.
Bu, JSON serileştirme/geri serileştirme kodu içeriyor mu?
Hayır — yalnızca dataclass şekillerini üretir; JSON ile bu nesneler arasında dönüşüm yapmanız gerekiyorsa kendi json.loads/dataclasses.asdict kodunuzu veya dacite gibi bir kütüphane ekleyin.