Bekerja dengan JSON
Mengubah data Python ke teks JSON dan sebaliknya, serta mengolah data bersarang.
Apa itu JSON?
JSON (JavaScript Object Notation) adalah format teks standar untuk bertukar data: respons API, file konfigurasi, penyimpanan sederhana. Bentuknya sangat mirip dict dan list Python.
{
"nama": "Sari",
"umur": 17,
"lulus": true,
"nilai": [80, 90],
"alamat": null
}
Padanan tipe
| Python | JSON |
|---|---|
dict | object {} |
list, tuple | array [] |
str | string |
int, float | number |
True / False | true / false |
None | null |
dumps dan loads (string)
import json
data = {"nama": "Sari", "lulus": True, "nilai": None}
teks = json.dumps(data) # dict → string JSON
print(teks) # {"nama": "Sari", "lulus": true, "nilai": null}
kembali = json.loads(teks) # string JSON → dict
print(kembali["nama"]) # Sari
Mudah diingat: dumps = dump string, loads = load string.
Format rapi
print(json.dumps(data, indent=2, ensure_ascii=False, sort_keys=True))
indent=2: rapi dengan indentasi.ensure_ascii=False: karakter non-Latin (é, 世) tidak di-escape.sort_keys=True: kunci terurut abjad.
dump dan load (file)
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, indent=2)
with open("data.json", encoding="utf-8") as f:
data = json.load(f)
Data bersarang
Respons API biasanya bersarang. Telusuri dengan indexing dan loop:
respons = '{"siswa": [{"nama": "Ani", "nilai": 90}, {"nama": "Budi", "nilai": 70}]}'
data = json.loads(respons)
for s in data["siswa"]:
print(s["nama"], s["nilai"])
rata = sum(s["nilai"] for s in data["siswa"]) / len(data["siswa"])
Menangani JSON yang rusak
try:
data = json.loads(teks)
except json.JSONDecodeError as e:
print("JSON tidak valid:", e)
Batasan
Tipe seperti set, datetime, atau objek buatan sendiri tidak bisa langsung di-serialisasi. Ubah dulu (set → list, tanggal → string ISO) atau berikan parameter default=.
Mengambil data dari internet (preview)
Di komputermu sendiri, library requests (pip install requests) memudahkan: requests.get(url).json() langsung mengembalikan dict.