Mengolah Data JSON Menggunakan Python

JSON adalah format data yang ringan dan populer untuk pertukaran data antar aplikasi. Artikel ini membahas pengelolaan JSON menggunakan Python.

Sekilas JSON

JSON adalah singkatan dari JavaScript Object Notation. JSON adalah format data yang populer untuk pertukaran data antar aplikasi. JSON adalah format data yang ringan dan mudah dibaca oleh manusia, dan dapat dengan mudah dikonversi ke format data lain seperti XML atau CSV.

Keuntungan menggunakan JSON sebagai media penyimpanan

Ada beberapa keuntungan menggunakan JSON sebagai media penyimpanan, antara lain:

  • Ringkas dan mudah dibaca

  • Terstruktur

  • Lebih mudah diakses oleh aplikasi

  • Dapat dikonversi ke format data lain

Contoh penggunaan JSON sebagai media penyimpanan

JSON dapat digunakan untuk menyimpan berbagai jenis data, seperti:

  • Data pengguna

  • Data barang

  • Data transaksi

  • Data konfigurasi

  • Data log

Kelemahan menggunakan JSON sebagai media penyimpanan

Ada beberapa kelemahan menggunakan JSON sebagai media penyimpanan, antara lain:

  • Tidak dapat menyimpan data biner

  • Tidak dapat menyimpan data yang sangat kompleks

Secara keseluruhan, JSON adalah format data yang baik untuk digunakan sebagai media penyimpanan. JSON adalah format data yang ringkas, mudah dibaca, dan terstruktur. JSON juga lebih mudah diakses oleh aplikasi dan dapat dikonversi ke format data lain.

Contoh Data JSON

Berikut adalah contoh data format JSON yang sederhana:

{
  "nama": "Fulan Fulanah",
  "usia": 20,
  "alamat": "Jl. Jendral Sudirman No. 1, Bandung"
}

Data JSON ini menggambarkan informasi pribadi seseorang. Data ini terdiri dari tiga properti:

  • nama adalah properti string yang menyimpan nama seseorang.

  • usia adalah properti integer yang menyimpan usia seseorang.

  • alamat adalah properti string yang menyimpan alamat seseorang.

Berikut adalah contoh lain dari data format JSON yang sederhana dan mudah dipahami:

[
  {
    "kode": 1,
    "nama": "Pensil",
    "harga": 2000
  },
  {
    "kode": 2,
    "nama": "Penghapus",
    "harga": 1000
  },
  {
    "kode": 3,
    "nama": "Penggaris",
    "harga": 1500
  },
  {
    "kode": 4,
    "nama": "Ballpoint",
    "harga": 5000
  }
]

Data JSON ini menggambarkan daftar barang. Data ini terdiri dari array (larik) yang berisi empat objek JSON. Setiap objek JSON memiliki tiga properti:

  • kode adalah properti integer yang menyimpan kode barang.

  • nama adalah properti string yang menyimpan nama barang.

  • harga adalah properti integer yang menyimpan harga barang.

Untuk selanjutnya kita anggap data ini disimpan dalam sebuah fail bernama barang.json.

Berikut contoh data JSON terkait informasi pribadi yang sedikit lebih rumit.

[
  {
    "nama": "Fulan Fulanah",
    "usia": 30,
    "alamat": {
      "jalan": "Jl. Jendral Sudirman No. 1",
      "kota": "Bandung",
      "provinsi": "Jawa Barat"
    },
    "hobi": ["Membaca", "Menulis", "Bermain Gitar"]
  },
  {
    "nama": "Asep",
    "usia": 25,
    "alamat": {
      "jalan": "Jl. Medan Merdeka Barat No. 1",
      "kota": "Jakarta",
      "provinsi": "DKI Jakarta"
    },
    "hobi": ["Olahraga", "Memasak", "Wisata"]
  }
]

Dalam contoh di atas, saya menyimpan data untuk dua orang dalam bentuk larik (array). Setiap objek dalam array mewakili satu orang dengan properti "nama", "usia", "alamat", dan "hobi" yang sesuai.

Dalam struktur JSON yang diberikan, "jalan", "kota", dan "provinsi" adalah bagian dari properti "alamat". Item-item ini merupakan kunci atau nama properti yang mewakili informasi tentang alamat seseorang.

Untuk selanjutnya kita anggap data ini disimpan dalam sebuah fail bernama orang.json.

Secara umum, data JSON ini mudah dipahami karena strukturnya sederhana dan mudah dibaca. Data JSON ini juga mudah diakses oleh aplikasi karena menggunakan format data yang standar.

Pemrograman: Mengakses Data

Baiklah, berikut adalah kode Python secara bertahap untuk membaca data fail JSON:

Tahap 1: Mengimpor modul JSON

Pertama-tama, kita perlu mengimpor modul JSON ke dalam kode kita. Modul JSON menyediakan fungsi-fungsi untuk membaca dan menulis data JSON.

import json

Tahap 2: Membuka fail JSON

Selanjutnya, kita perlu membuka fail JSON yang ingin kita baca. Kita dapat menggunakan fungsi open() untuk membuka fail JSON.

with open("barang.json", "r") as f:

Argumen pertama dari fungsi open() adalah nama fail JSON yang ingin kita buka. Argumen kedua adalah mode r yang berarti kita akan membuka fail JSON dalam mode baca.

Tahap 3: Membaca data JSON

Setelah fail JSON dibuka, kita dapat membaca data JSON menggunakan fungsi json.load(). Fungsi json.load() mengembalikan objek Python yang berisi data JSON.

barang = json.load(f)

Tahap 4: Mencetak data JSON

Setelah data JSON dibaca, kita dapat mencetak data JSON menggunakan fungsi print().

print(barang)

Output dari kode Python tersebut adalah sebagai berikut:

[{'kode': 1, 'nama': 'Pensil', 'harga': 2000}, {'kode': 2, 'nama': 'Penghapus', 'harga': 1000}, {'kode': 3, 'nama': 'Penggaris', 'harga': 1500}, {'kode': 4, 'nama': 'Ballpoint', 'harga': 5000}]

Jika ingin menampilkan data dengan format lebih rapi, bisa dicoba dengan memberikan indentasi dari setiap objek dan itemnya. Contohnya seperti ini.

print(json.dumps(barang, indent=4))

Baris kode tersebut akan mencetak data JSON dalam format yang lebih mudah dibaca. Fungsi json.dumps() digunakan untuk mengkonversi data Python ke format JSON. Argumen pertama dari fungsi json.dumps() adalah data Python yang ingin dikonversi. Argumen kedua adalah opsi indent, yang menentukan jumlah spasi yang digunakan untuk indentasi data JSON.

Dalam kasus ini, kita menggunakan opsi indent=4 untuk membuat indentasi dengan empat spasi.

Luarannya seperti ini.

[
    {
        "kode": 1,
        "nama": "Pensil",
        "harga": 2000
    },
    {
        "kode": 2,
        "nama": "Penghapus",
        "harga": 1000
    },
    {
        "kode": 3,
        "nama": "Penggaris",
        "harga": 1500
    },
    {
        "kode": 4,
        "nama": "Ballpoint",
        "harga": 5000
    }
]

Tahap 5: Menyaring barang dengan harga di atas 2000

Kita dapat menggunakan kode Python berikut untuk menyaring barang dengan harga lebih besar atau sama dengan 2000:

# Cari semua barang dengan harga lebih besar atau sama dengan 2000
barang_mahal = []
for item in barang:
    if item["harga"] >= 2000:
        barang_mahal.append(item)

# Cetak daftar barang mahal
print(barang_mahal)

Luaran dari kode Python tersebut adalah sebagai berikut:

[
    {
        "kode": 1,
        "nama": "Pensil",
        "harga": 2000
    },
    {
        "kode": 4,
        "nama": "Ballpoint",
        "harga": 5000
    }
]

Kode Python ini menggunakan perulangan for untuk iterasi melalui semua objek JSON dalam daftar barang. Untuk setiap objek JSON, kode ini memeriksa properti harga. Jika nilai properti harga lebih besar atau sama dengan 2000, maka kode ini menambahkan objek JSON tersebut ke dalam daftar barang_mahal.

Kode Python lengkap

Berikut adalah kode Python lengkap untuk membaca data fail JSON:

import json

with open("barang.json", "r") as f:
    barang = json.load(f)

# Tampilan standar
print(barang)

# Tampilan yang lebih rapi/cantik dengan indentasi 4
print(json.dumps(barang, indent=4))

# Cari semua barang dengan harga di atas 2000
barang_mahal = []
for item in barang:
    if item["harga"] >= 2000:
        barang_mahal.append(item)

# Cetak daftar barang mahal
#print(barang_mahal)
print(json.dumps(barang_mahal, indent=4))

Kode Python ini adalah gabungan dari semua tahap yang telah kita bahas sebelumnya.

Pemrograman: Menambah Data

Untuk melakukan penambahan data, pertama-tama kita siapkan sebuah contoh data (objek) sebagai berikut.

{
    "kode": 5,
    "nama": "Buku",
    "harga": 10000
}

Kode Python untuk menambah data secara lengkap adalah sebagai berikut.

import json

with open("barang.json", "r") as f:
    barang = json.load(f)

# Tambahkan data barang baru
barang.append({
    "kode": 5,
    "nama": "Buku",
    "harga": 10000
})

# Simpan data barang yang telah diubah
with open("barang.json", "w") as f:
    json.dump(barang, f)

Kode Python ini akan menambah data barang baru ke fail JSON barang.json. Data barang baru memiliki kode 5, nama "Buku", dan harga 10000.

Beberapa kode yang perlu dijelaskan selain yang pernah dibahas sebelumnya adalah:

  • barang.append({}): digunakan untuk menambahkan data barang baru ke daftar barang.

  • { "kode": 5, "nama": "Buku", "harga": 10000 } adalah data barang baru yang akan ditambahkan.

  • with open("barang.json", "w") as f: digunakan untuk membuka fail JSON barang.json dalam mode tulis.

  • json.dump(barang, f): digunakan untuk menulis data JSON dari variabel barang ke fail barang.json.

Jika fail json dibaca dan ditampilkan secara keseluruhan akan memunculkan lima objek, dengan tambahan barang terbaru yang baru saja ditambahkan.

Pemrograman: Mencari Data

Dalam bagian akan menambahkan contoh pencarian data barang berdasarkan kode dan nama. Untuk pencarian harga sudah dicontohkan dalam bagian akhir Membaca Data.

Berikut adalah contoh kode untuk mencari data barang berdasarkan kode:

import json

with open("barang.json", "r") as f:
    barang = json.load(f)

# Cari barang dengan kode 1
for item in barang:
    if item["kode"] == 1:
        print(item)

Adapun untuk mencari barang berdasarkan nama, potongan kodenya adalah sebagai berikut.

# Cari barang dengan nama "Pensil"
for item in barang:
    if item["nama"] == "Pensil":
        print(item)

Untuk membuat pencarian nama barang lebih dinamis, potongan kodenya adalah sebagai berikut.

import json

with open("barang.json", "r") as f:
    barang = json.load(f)

# Cari barang yang namanya mengandung huruf/kata "peng" (tanpa memperhatikan huruf besar atau kecil)
barang_cari = []
kataCari = "peng"

for item in barang:
    if kataCari.lower() in item["nama"].lower():
        barang_cari.append(item)

# Cetak daftar barang pensil
print(barang_cari)

Sedikit penjelasan beberapa bagian dari kode tersebut adalah:

  • barang_cari = []: digunakan untuk membuat daftar barang yang namanya mengandung huruf atau kata "peng".

  • kataCari = "peng": digunakan untuk menentukan huruf atau kata yang akan dicari.

  • for item in barang: digunakan untuk iterasi melalui semua data barang dalam variabel barang.

  • kataCari.lower() in item["nama"].lower() digunakan untuk memeriksa apakah huruf atau kata "peng" terdapat di dalam nama barang, dengan huruf kecil.

  • barang_cari.append(item): digunakan untuk menambahkan data barang tersebut ke dalam daftar barang_cari.

  • print(barang_cari): digunakan untuk mencetak daftar barang yang namanya mengandung huruf atau kata "peng".

Contoh luaran dari kode tersebut di atas adalah:

[
    {
        "kode": 2,
        "nama": "Penghapus",
        "harga": 1000
    },
    {
        "kode": 3,
        "nama": "Penggaris",
        "harga": 1500
    }
]

Pemrograman: Mengubah Data

Untuk mencontohkan pengubahan atau pembaruan data, kita buat contoh mengubah data barang yang kodenya 5, nama "Buku", harga 10000 menjadi nama baru "Buku Tulis", harga baru 15000.

Kodenya adalah sebagai berikut.

import json

with open("barang.json", "r") as f:
    barang = json.load(f)

# Cari data barang dengan kode 5
for item in barang:
    if item["kode"] == 5:
        # Ubah nama dan harga
        item["nama"] = "Buku Tulis"
        item["harga"] = 15000

# Simpan data barang yang telah diubah
with open("barang.json", "w") as f:
    json.dump(barang, f)

# Cetak daftar barang
print(barang)

Beberapa penjelasan hanya di bagian penting:

  • for item in barang: digunakan untuk iterasi melalui semua data barang dalam variabel barang.

  • if item["kode"] == 5: digunakan untuk memeriksa apakah kode barang yang sedang diproses sama dengan 5.

  • item["nama"] = "Buku Tulis" digunakan untuk mengubah nama barang.

  • item["harga"] = 15000 digunakan untuk mengubah harga barang.

  • with open("barang.json", "w") as f: digunakan untuk membuka file barang.json dalam mode penulisan.

  • json.dump(barang, f) digunakan untuk menyimpan data barang ke file barang.json.

  • print(barang): digunakan untuk mencetak daftar barang.

Kode alternatif untuk mengubah data barang adalah sebagai berikut.

import json

with open("barang.json", "r") as f:
    barang = json.load(f)

# Cari data barang dengan kode 5
data_barang = barang[barang.index({"kode": 5})]

# Ubah nama dan harga
data_barang["nama"] = "Buku Tulis"
data_barang["harga"] = 15000

# Ganti data barang yang telah diubah
barang[barang.index({"kode": 5})] = data_barang

# Simpan data barang yang telah diubah
with open("barang.json", "w") as f:
    json.dump(barang, f)

# Cetak daftar barang
print(barang)

Kode ini akan melakukan langkah-langkah yang sama dengan kode sebelumnya, tetapi dengan cara yang lebih singkat.

Berikut adalah penjelasan lebih rinci tentang kode tersebut:

  • barang[barang.index({"kode": 5})] digunakan untuk mengambil data barang dengan kode 5.

  • data_barang["nama"] = "Buku Tulis" digunakan untuk mengubah nama barang.

  • data_barang["harga"] = 15000 digunakan untuk mengubah harga barang.

  • barang[barang.index({"kode": 5})] = data_barang digunakan untuk mengganti data barang yang telah diubah.

Output dari kode tersebut adalah sebagai berikut:

[{'kode': 1, 'nama': 'Pensil', 'harga': 2000}, {'kode': 2, 'nama': 'Penggaris', 'harga': 5000}, {'kode': 3, 'nama': 'Rautan', 'harga': 1000}, {'kode': 4, 'nama': 'Ballpoint', 'harga': 5000}, {'kode': 5, 'nama': 'Buku Tulis', 'harga': 15000}]

Pemrograman: Menghapus Data

Untuk menghapus data, mekanismenya mirip dengan mengubah data. Bedanya, data barang yang dicari akan dihapus dari fail JSON.

Berikut contoh kode untuk menghapus data barang dengan kode 5.

import json

with open("barang.json", "r") as f:
    barang = json.load(f)

# Cari data barang dengan kode 5
for item in barang:
    if item["kode"] == 5:
        # Hapus data barang
        barang.remove(item)

# Simpan data barang yang telah dihapus
with open("barang.json", "w") as f:
    json.dump(barang, f)

# Cetak daftar barang
print(barang)

Poin penting menghapus data adalah pada kode ini.

  • barang.remove(item): digunakan untuk menghapus data barang dari daftar.

Alternatif lainnya seperti pada kode mengubah data sebelumnya adalah:

# Cari data barang dengan kode 5
data_barang = barang[barang.index({"kode": 5})]

# Hapus data barang
barang.remove(data_barang)

Penutup

Selamat, Anda telah menyelesaikan tutorial tentang membaca, mencari, menambah, mengubah, dan menghapus data di file JSON menggunakan Python. Sekarang, Anda dapat menggunakan keterampilan ini untuk mengembangkan berbagai aplikasi yang membutuhkan penyimpanan dan pengelolaan data dalam format JSON.

Berikut adalah beberapa tips untuk mengembangkan aplikasi berbasis JSON:

  • Gunakan struktur JSON yang sesuai dengan kebutuhan aplikasi Anda.

  • Gunakan metode JSON yang tepat untuk membaca dan menulis data JSON.

  • Validasi data JSON sebelum menggunakannya.

  • Gunakan library JSON pihak ketiga untuk memudahkan pengembangan aplikasi Anda.

Berikutnya akan saya tuliskan tutorial mengemas aplikasi pengelolaan fail JSON dalam format online atau versi website.

Repositori kode dalam tutorial ini ada di:
https://github.com/galihboy/json_crud

Semoga tutorial ini bermanfaat bagi Anda. Tetap semangat belajar dan mengembangkan aplikasi yang bermanfaat!