JSON ke Python
Belum ada konten
Alat online gratis JSON ke Python yang mengonversi data JSON secara otomatis ke class Python @dataclass dengan anotasi tipe. String menjadi str, integer int, float float, boolean bool, array List[T], objek bersarang menghasilkan dataclass independen, null menjadi Optional[Any]. Berjalan lokal di browser, salin dalam satu klik atau unduh model.py.
Rekomendasi Terkait
Tentang JSON ke Python: Mengonversi data JSON menjadi model dataclass yang dapat dieksekusi
JSON ke Python adalah proses mengonversi data dalam format JSON menjadi definisi tipe @dataclass Python.
@dataclass adalah fitur pustaka standar yang diperkenalkan di Python 3.7 (PEP 557).
Pengenalan tipe adalah inti dari JSON ke Python.
Berbeda dengan beberapa alat online, semua perhitungan alat ini terjadi di browser.
Kode yang dihasilkan dapat digunakan langsung dalam proyek Python.
Kode yang dihasilkan secara otomatis adalah titik awal, bukan titik akhir.
dataclass vs Pydantic BaseModel vs attrs vs TypedDict.
JSON ke Python memiliki nilai unik dalam ekosistem Data Science.
Alat opsional lain di ekosistem Python: marshmallow, cattrs, pydantic, apischema.
Dalam skenario CLI dan otomatisasi.
Performa dan pemeliharaan dengan frozen=True dan slots=True.
Kasus penggunaan
- Integrasi REST API
- Model request/response FastAPI
- Serializer Django Ninja / DRF
- Pemodelan data Scraper
- Definisi fitur ML
- Deserialisasi file konfigurasi
- Struktur sementara Jupyter Notebook
- Definisi antarmuka mikroservis
- Pengembangan alat CLI
- Konstruksi data uji
- Analisis log terstruktur
- Migrasi pusat konfigurasi
- Kolaborasi cross-language
- Migrasi basis data
- Blockchain/Web3
- ETL Data Science
- Validasi skema OpenAPI
- Contoh didaktis
- Konversi nama field
Cara Penggunaan
- Tempel konten JSON di editor kiri atau unggah file
- Tunggu 400ms untuk konversi otomatis
- Jika JSON salah format klik «Perbaiki JSON»
- Klik «Salin» atau «Unduh» untuk menyimpan model.py
Fitur
- Konversi lokal di browser
- Output dengan anotasi dataclass
- Pengenalan tipe otomatis
- Pemisahan otomatis objek bersarang
- Resolusi otomatis generik List
- Field Optional opsional
- Konversi otomatis dengan debounce 400ms
- Perbaikan kesalahan JSON dalam satu klik
- Salin dan unduh
- Riwayat input localStorage
- Panel responsif yang dapat diubah ukurannya
- Mendukung pascapemrosesan Pydantic/attrs/TypedDict
Contoh Kode
Python: Parsing respons API dengan requests ke dataclass yang dihasilkan
python# requirements.txt
# requests>=2.31
from dataclasses import dataclass
from typing import Any, List, Optional
import json
import requests
@dataclass
class Address:
city: str
zip: str
@dataclass
class User:
id: int
name: str
active: bool
address: Address
tags: List[str]
label: Optional[Any] = None
def main() -> None:
resp = requests.get("https://api.example.com/users/1", timeout=10)
resp.raise_for_status()
user: User = User(**resp.json())
print(f"{user.name} lives in {user.address.city}")
if __name__ == "__main__":
main()Python: FastAPI menggunakan model yang dihasilkan untuk validasi body (versi Pydantic)
python# pip install fastapi 'pydantic>=2'
from typing import List, Optional
from fastapi import FastAPI
from pydantic import BaseModel
class Address(BaseModel):
city: str
zip: str
class User(BaseModel):
id: int
name: str
email: str
active: bool = True
address: Address
tags: List[str] = []
label: Optional[str] = None
app = FastAPI()
@app.post("/users")
async def create_user(user: User) -> dict:
return {"id": user.id, "name": user.name}Best Practices
Contoh JSON harus berisi nilai contoh untuk semua field
Berikan nilai contoh untuk field kunci guna mendapatkan tipe yang akurat.
JSON kompleks sebaiknya dibagi menjadi beberapa dataclass
Bagi menjadi beberapa file jika jumlah field melebihi 50.
Beralih ke Pydantic BaseModel jika validasi runtime diperlukan
Untuk proyek FastAPI atau jika validasi diperlukan, gunakan Pydantic.
Kombinasikan mypy untuk pengecekan tipe di fase CI
Tambahkan mypy src/ --strict ke pipeline CI.
Hindari nilai default yang dapat berubah di field dataclass
Gunakan field(default_factory=list) alih-alih = [].
model.py yang diunduh harus ditempatkan di paket models independen
Struktur yang direkomendasikan: src/models/__init__.py + submodul.
JSON sensitif harus diproses secara lokal
Gunakan alat ini (eksekusi lokal) untuk JSON sensitif.
Python 3.10+ aktifkan slots untuk menghemat memori
Gunakan @dataclass(slots=True) di Python 3.10+ untuk performa yang lebih baik.
Pertanyaan Umum
Bagaimana cara mengonversi JSON ke dataclass Python?
Tempel konten JSON di editor kiri atau unggah file.
Apakah kode Python yang dihasilkan menyertakan anotasi dataclass?
Ya, menghasilkan dekorator @dataclass dan impor yang diperlukan.
Struktur data JSON apa yang didukung?
Mendukung semua struktur JSON yang valid: tipe primitif, array, objek bersarang.
Bagaimana tipe field JSON dipetakan ke tipe Python?
String→str, integer→int, float→float, boolean→bool, array→List[T], objek bersarang→@dataclass, null→Optional[Any].
Tipe apa yang dihasilkan untuk nilai null?
Nilai null menghasilkan Optional[Any].
Apakah array dikonversi ke List?
Ya, array JSON dikonversi ke List[T].
Bagaimana objek bersarang ditangani?
Setiap objek bersarang menghasilkan class @dataclass independen.
Dapatkah saya menyesuaikan nama class yang dihasilkan?
Ya, Anda dapat mengubah nama class secara manual setelah generasi.
Dapatkah kode yang dihasilkan digunakan langsung dalam proyek?
Ya, pastikan memiliki lingkungan Python 3.7+.
Dapatkah saya mengonversi ke Pydantic BaseModel alih-alih dataclass?
Ya, ganti @dataclass dengan class Xxx(BaseModel): dan impor dari pydantic.
Apakah data dikirim ke server? Apakah privasi aman?
Berjalan sepenuhnya lokal di browser, tidak ada data yang dikirim ke server.
Apakah perlu registrasi atau login?
Tidak. Alat ini sepenuhnya gratis, tanpa registrasi.
Apa yang harus dilakukan jika format JSON salah?
Klik tombol «Perbaiki JSON» untuk memperbaiki kesalahan umum secara otomatis.
Apakah mengonversi JSON besar lambat?
Untuk JSON di atas 10MB kami merekomendasikan alat CLI quicktype.
Pemecahan Masalah
Pesan «Masukkan data JSON» atau sisi kanan kosong
Input kosong. Pastikan Anda telah menempelkan JSON yang valid.
Pesan parsing JSON gagal
Penyebab umum: koma di akhir, tanda kutip tunggal alih-alih ganda, kunci tanpa tanda kutip, komentar JavaScript.
Tipe field yang dihasilkan tidak cukup akurat
Ubah tipe secara manual setelah generasi.
Field null menghasilkan Optional[Any] alih-alih Optional[str]
Tipe konkret tidak dapat disimpulkan dari null.
Kesalahan impor file .py yang diunduh
Kemungkinan penyebab: versi Python di bawah 3.7, konflik nama.
Field JSON snake_case tidak cocok dengan gaya penamaan Python
Gunakan alias_generator Pydantic atau ganti nama secara manual.
Halaman membeku dengan JSON yang sangat besar
Kami merekomendasikan untuk membagi JSON atau menggunakan alat CLI.
Kesalahan validasi body FastAPI (422)
Ubah tipe field menjadi Optional[Typo] = None.
Glosarium
- dataclass
- Dekorator pustaka standar Python 3.7+ (@dataclass) untuk menghasilkan metode ajaib secara otomatis.
- Modul typing
- Pustaka standar Python untuk anotasi tipe.
- Optional[T]
- Tipe opsional dari modul typing.
- List[T]
- Tipe list generik Python.
- Any
- Tipe khusus yang menerima tipe apa pun.
- Pydantic BaseModel
- Class dasar untuk model data dari pustaka Pydantic.
- FastAPI
- Framework web Python modern berbasis Pydantic.
- PEP 557
- Proposal yang mendefinisikan sintaks dekorator dataclass.
- Anotasi tipe (Type Hint)
- Indikasi tipe yang dianotasi setelah parameter dan variabel.
- PEP 484
- Proposal standar untuk anotasi tipe di Python.
- from __future__ import annotations
- Instruksi untuk evaluasi anotasi yang tertunda (PEP 563).
- model.py
- Nama file default yang diunduh oleh alat ini.
Tabel referensi cepat tipe JSON → tipe Python
Alat secara otomatis menyimpulkan tipe Python yang sesuai:
| Contoh nilai JSON | Tipe Python yang dihasilkan | Penjelasan |
|---|---|---|
null | Optional[Any] | Nilai null tidak pasti |
true / false | bool | Boolean JSON → bool |
42 | int | Integer JSON → int |
3.14 | float | Float JSON → float |
"hello" | str | String JSON → str |
["a","b"] | List[str] | Array string → List[str] |
[1,2,3] | List[int] | Array integer → List[int] |
[{...},{...}] | List[Item] | Array objek → List[Item] |
[] | List[Any] | Array kosong |
{...} objek bersarang | @dataclass independen | Objek bersarang menghasilkan @dataclass independen |
Privacy & Security
Semua operasi alat JSON ke Python ini berjalan sepenuhnya secara lokal di browser: parsing JSON, generasi kode Python, dan unduhan file semuanya dieksekusi di sisi klien melalui JavaScript, tidak ada konten JSON, file yang diunggah, atau kode yang dihasilkan dikirim melalui jaringan ke server.
Authoritative References
- Kompres JSON
- CSV ke JSON
- JSON ke CSV
- JSON Diff
- JSON Escape / Unescape
- Meratakan JSON
- Pemformat JSON
- Generator JSON
- Kueri JSONPath
- Penggabungan JSON
- Perbaikan JSON
- Validator Skema JSON
- Urutkan JSON
- JSON Stringify
- JSON ke HTML
- JSON ke Java
- JSON ke Markdown
- JSON ke SQL
- JSON ke TOML
- JSON ke TypeScript
- XML ke JSON
- Ubah JSON ke XML
- YAML ke JSON
- JSON → YAML
- JSON ke Python
- JSON ke Go
- JSON ke Rust
- JSON ke Swift
- JSON ke C#
- JSON ke C++
- JSON ke PHP