Data nyata jarang datar. Satu faktur berisi keterangan pembeli sebagai objek dan daftar barang sebagai larik berisi objek. Menelusurinya berarti menyebut jalan masuknya satu per satu: kunci untuk objek, nomor urut untuk larik. Kesalahan menelusuri menghasilkan KeyError untuk objek atau TypeError saat larik diperlakukan seperti objek.
faktur = json.loads(teks)
print(faktur["pembeli"]["nama"]) # objek di dalam objek
print(faktur["item"][0]["produk"]) # objek pertama di dalam larik
print(sum(b["jumlah"] for b in faktur["item"]))Tipe nilai JSON dipetakan ke tipe Python dengan aturan tetap. Yang paling sering mengejutkan adalah tiga nilai harfiah: true, false, dan null ditulis huruf kecil semua di JSON, sedangkan padanannya di Python ditulis True, False, dan None. Menulis True di dalam dokumen JSON menghasilkan galat parser, dan menulis null di dalam kode Python menghasilkan NameError.
Perbedaan lain menyangkut kekosongan. JSON membedakan kunci yang bernilai null dari kunci yang memang tidak ada. Keduanya perlu perlakuan berbeda: nilai null berarti keterangan itu ada tetapi kosong, sedangkan kunci yang hilang berarti pengirimnya tidak menyertakan keterangan itu sama sekali.