Materi
JSON menyimpan data bersarang sebagai teks: objek {...}, larik [...], teks, angka, true/false, dan null. json.dump(data, f) menulis data Python ke berkas yang terbuka; json.load(f) membacanya kembali. Pasangannya, json.dumps dan json.loads, bekerja dengan str alih-alih berkas. dict menjadi objek, list dan tuple menjadi larik dan kembali sebagai list, None menjadi null.
Argumen indent=2 menulis JSON bertingkat yang mudah dibaca orang. Secara bawaan json.dump menulis huruf non-ASCII sebagai kode, sehingga "Kué" tersimpan sebagai "Ku\u00e9"; ensure_ascii=False menulis hurufnya apa adanya — pastikan berkasnya dibuka dengan encoding="utf-8".
import json
pengaturan = {"toko": "Batik Ibu Siti", "kota": "Pekalongan", "diskon": {"member": 10, "grosir": 15}}
with open("pengaturan_toko.json", "w", encoding="utf-8") as f:
json.dump(pengaturan, f, indent=2, ensure_ascii=False)
with open("pengaturan_toko.json", encoding="utf-8") as f:
dibaca = json.load(f)
print(dibaca["diskon"]["grosir"]) # 15Kunci objek JSON selalu teks. Dict berkunci angka, {1: "Senin"}, tersimpan sebagai {"1": "Senin"} dan kembali dengan kunci "1", sehingga data[1] berhenti dengan KeyError. Objek kelas buatanmu tidak bisa disimpan langsung: json.dump berhenti dengan TypeError: Object of type Barang is not JSON serializable. Ubah dulu dengan asdict() untuk dataclass, dan saat memuat, bangun objeknya lagi dari dict.