JSON ke Python Dataclass
Hasilkan Python dataclass dengan type hints dari JSON. Gratis, di browser Anda.
Untuk apa alat ini
JSON ke Python dataclass dengan type hints
Kompatibel dengan Python 3.7+
Kode yang dihasilkan menggunakan modul dataclasses dari library standar. Tanpa dependensi eksternal, berjalan di lingkungan Python modern mana pun.
100% pribadi
JSON Anda diproses di browser. Tidak pernah dikirim ke server mana pun. Aman untuk data API internal atau model data rahasia.
Type hints yang tepat
Inferensi tipe yang presisi: str, int, float, bool, List, Optional, dan dataclass bersarang dihasilkan dengan nama dan tipe yang sesuai.
Instan
Pembuatan secara real time saat Anda mengetik atau menempel JSON. Tanpa menunggu, tanpa panggilan server.
Cara kerjanya
Tiga langkah, tanpa kerumitan
Tempel JSON Anda
Masukkan JSON yang ingin Anda konversi. Bisa berupa respons API, file konfigurasi, atau struktur JSON valid apa pun.
Dapatkan Python dataclass Anda
Alat ini menghasilkan kelas Python yang dihiasi dengan @dataclass, dengan type hints yang disimpulkan (str, int, float, bool, list, dataclass bersarang) untuk setiap field.
Salin dan impor di proyek Anda
Salin kode yang dihasilkan ke modul Python Anda. Anda hanya perlu mengimpor dataclass dari modul dataclasses pada library standar.
FAQ
Ada pertanyaan?
Dataclass adalah kelas Python yang didefinisikan terutama untuk menyimpan data, diperkenalkan di Python 3.7 melalui PEP 557. Dekorator @dataclass secara otomatis menghasilkan metode seperti __init__, __repr__, dan __eq__ berdasarkan field yang dideklarasikan dengan type hints. Ini adalah alternatif modern dari mendefinisikan kelas secara manual dengan metode __init__ yang berulang, menawarkan kode lebih bersih tanpa dependensi eksternal seperti Pydantic.
Python dict tidak memiliki tipe yang terdefinisi, menerima kunci dan nilai apa pun, dan tidak menyediakan autocompletion di IDE. Sebuah dataclass mendefinisikan struktur secara eksplisit dengan type hints, memungkinkan akses field dengan notasi titik (obj.field bukan obj.field dalam tanda kurung), secara otomatis menghasilkan metode perbandingan, dan memungkinkan IDE serta alat analisis statis seperti mypy dan Pyright mendeteksi kesalahan tipe sebelum kode dijalankan.
Alat ini menganalisis nilai JSON untuk menyimpulkan tipe Python yang paling tepat: string teks menjadi str, bilangan bulat menjadi int, desimal menjadi float, boolean menjadi bool, array menjadi List[T] di mana T adalah tipe elemen yang disimpulkan, dan objek bersarang menjadi dataclass baru. Nilai null menjadi Optional[T] dengan nilai default None.
Ya. Ketika JSON mengandung objek di dalam objek, alat ini menghasilkan dataclass terpisah untuk setiap level penumpukan. Kelas diurutkan dengan benar dalam kode sehingga setiap dataclass didefinisikan sebelum direferensikan. Misalnya, objek user yang mengandung name dan age akan menghasilkan dataclass User beserta dataclass induk yang memuatnya.
Field dengan nilai null dalam sampel JSON dihasilkan sebagai Optional[T] = None dalam dataclass. Ini memberi sinyal bahwa field tersebut mungkin tidak ada atau bernilai None saat runtime. Untuk menggunakan Optional, Anda perlu mengimpornya dari typing (Python versi di bawah 3.10) atau menggunakan sintaks T | None (Python 3.10 ke atas). Alat ini menghasilkan kode yang kompatibel dengan Python 3.7 ke atas.
Evolusi type hints Python: PEP 484 ke dataclass, perbandingan dengan Pydantic
Type hints di Python diperkenalkan oleh PEP 484 pada Python 3.5 tahun 2015. Sebelumnya, Python diketik secara dinamis dan alat analisis statis tidak dapat memverifikasi tipe. PEP 526 untuk Python 3.6 menambahkan anotasi variabel, dan PEP 557 untuk Python 3.7 memperkenalkan dataclass yang menggunakan type hints sebagai deklarasi field. Evolusi ini mengubah Python menjadi bahasa yang dapat memanfaatkan perilaku dinamis sekaligus pengecekan tipe statis.
Modul dataclasses dari library standar menghasilkan otomatis __init__, __repr__, dan __eq__. Untuk kebutuhan lebih lanjut seperti validasi data, serialisasi otomatis, dan kompatibilitas skema JSON, Pydantic versi 1 dan 2 adalah alternatif paling populer. FastAPI menggunakan Pydantic untuk memvalidasi body request HTTP secara otomatis. Namun, untuk sebagian besar kasus penggunaan pemodelan data internal, dataclass standar sudah memadai dan tidak memerlukan dependensi eksternal.
Transisi dari Python 2 ke 3 dan adopsi type hints mengubah ekosistem secara signifikan. Alat seperti mypy dari Dropbox, Pyright dari Microsoft, dan Pylance untuk VS Code melakukan analisis tipe statis. Dalam proyek besar, type hints secara signifikan mengurangi bug terkait tipe di lingkungan produksi. Menghasilkan dataclass dari JSON API eksternal atau skema database adalah praktik umum untuk mempertahankan kode Python yang mudah dipelihara dan diverifikasi.