Bekerja dengan JSON

Mengubah data Python ke teks JSON dan sebaliknya, serta mengolah data bersarang.

Part 23 dari 24 ± 35 menit Gratis

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

PythonJSON
dictobject {}
list, tuplearray []
strstring
int, floatnumber
True / Falsetrue / false
Nonenull

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.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X