JSON ke Dataclass dan TypedDict Python
Ubah JSON menjadi dataclass atau kelas TypedDict Python dengan type hint, field Optional, dan kelas bersarang yang didefinisikan berurutan sesuai dependensi.
Class diurutkan agar dependensi didefinisikan lebih dulu. Field opsional bernilai default None; output TypedDict memakai NotRequired (Python 3.11+).
Berjalan sepenuhnya di browser Anda. Data Anda tidak pernah diunggah.
Alat Terkait
Lihat SemuaApa itu JSON ke Python?
Hasilkan kelas Python bertipe dari contoh JSON: berupa kelas @dataclass atau definisi TypedDict. Objek bersarang menjadi kelas tersendiri, yang dikeluarkan sebelum kelas yang memakainya sehingga modul dapat diimpor dengan bersih.
Cara menggunakan JSON ke Python
- Tempel contoh JSON ke Input JSON (atau klik Muat contoh / Buka file).
- Atur Nama tipe root (bawaan
Root). - Pilih Gaya output:
@dataclassatauTypedDict. - Salin kode Python yang dihasilkan atau Unduh sebagai file.
Contoh
{"id":1,"name":"A","tags":["x"]} from dataclasses import dataclass
from typing import List
@dataclass
class Root:
id: int
name: str
tags: List[str] Kapan menggunakan JSON ke Python
Gunakan untuk menambahkan type hint pada payload JSON di skrip, kode FastAPI, atau pengujian. Dataclass tidak otomatis mengonversi dict bersarang – gunakan pustaka seperti dacite atau pydantic untuk itu, atau gaya TypedDict agar tetap memakai dict biasa.
Cara kerja JSON ke Python
Contoh JSON ditelusuri secara rekursif dan setiap posisi mengumpulkan tipe yang pernah dilihatnya. Array berisi objek digabung menjadi satu tipe: key yang tidak ada di sebagian elemen menjadi opsional, key yang bernilai null di suatu tempat menjadi nullable, bilangan bulat yang bercampur dengan desimal menjadi tipe floating-point, dan campuran tipe lain beralih ke tipe dinamis. Objek bersarang menjadi tipe bernama sendiri (PascalCase dari key, key array disingularkan: orders → Order), dengan akhiran angka jika nama bentrok. Keluaran Python memakai int, float, str, bool, List[T], Optional[T] untuk null, dan Any untuk nilai dinamis. Pada dataclass, field wajib diletakkan lebih dulu dan field opsional mendapat = None; key yang bukan identifier valid (atau berupa keyword seperti class) diganti namanya dalam snake_case dengan komentar # JSON key. Keluaran TypedDict menandai key yang hilang dengan NotRequired dan beralih ke sintaks fungsional TypedDict("Name", {...}) ketika sebuah key bukan identifier valid.
Kasus Penggunaan Umum
- Memberi anotasi tipe pada respons JSON API untuk mypy atau Pyright
- Membuat dataclass untuk file konfigurasi
- Mendeskripsikan payload webhook dengan TypedDict
- Menghasilkan model awal sebelum beralih ke pydantic
Pertanyaan Umum
Versi Python apa yang dibutuhkan?
Keluaran dataclass bekerja di Python 3.7+. Keluaran TypedDict memakai NotRequired, yang tersedia di modul typing mulai Python 3.11 (atau typing_extensions untuk versi lama).
Mengapa sebagian field diganti namanya?
Key seperti first-name atau class bukan nama atribut yang valid, sehingga menjadi first_name / class_ dengan komentar yang menunjukkan key JSON aslinya.
Bisakah saya memuat JSON langsung ke dataclass?
Root(**data) bekerja untuk data datar; objek bersarang tetap berupa dict kecuali Anda mengonversinya sendiri atau memakai pustaka bantu.