DokumenGambarMediaAlat PDF

JSON ke Python Dataclass

Hasilkan Python dataclass dengan type hints dari JSON. Gratis, di browser Anda.

Processed in your browser

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.

Tiga langkah, tanpa kerumitan

1

Tempel JSON Anda

Masukkan JSON yang ingin Anda konversi. Bisa berupa respons API, file konfigurasi, atau struktur JSON valid apa pun.

2

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.

3

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.

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.