logo
GeekFormat

JSON ke Python

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

  1. Tempel konten JSON di editor kiri atau unggah file
  2. Tunggu 400ms untuk konversi otomatis
  3. Jika JSON salah format klik «Perbaiki JSON»
  4. 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 JSONTipe Python yang dihasilkanPenjelasan
nullOptional[Any]Nilai null tidak pasti
true / falseboolBoolean JSON → bool
42intInteger JSON → int
3.14floatFloat JSON → float
"hello"strString 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 independenObjek 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