Lewati ke konten utama

Data JSON Python: Panduan dengan Contoh

Pelajari cara bekerja dengan JSON di Python, termasuk serialisasi, deserialisasi, pemformatan, mengoptimalkan performa, menangani API, serta memahami keterbatasan dan alternatif JSON.
Diperbarui 5 Jun 2026  · 6 mnt baca

JSON (JavaScript Object Notation) adalah format pertukaran data yang ringan dan telah menjadi pilihan populer untuk pertukaran data di banyak bahasa pemrograman, termasuk Python. Dengan sintaks yang sederhana dan kemampuan merepresentasikan struktur data yang kompleks, JSON telah menjadi bagian integral dari pengembangan web modern, menggerakkan segala sesuatu mulai dari API hingga aplikasi web sisi klien. 

Dalam tutorial ini, saya akan membahas dasar-dasar bekerja dengan JSON di Python, termasuk serialisasi, deserialisasi, membaca dan menulis file JSON, pemformatan, dan lainnya. Di akhir tutorial ini, Anda akan:

  • Memahami JSON beserta kelebihan dan kekurangannya
  • Mengidentifikasi kasus penggunaan JSON dan membandingkannya dengan alternatif umum
  • Melakukan serialisasi dan deserialisasi data JSON secara efektif di Python
  • Bekerja dengan data JSON dalam bahasa pemrograman Python
  • Memformat data JSON di Python menggunakan pustaka `json`
  • Mengoptimalkan performa saat bekerja dengan data JSON
  • Mengelola data JSON dalam pengembangan API.

Apa itu JSON?

JSON (JavaScript Object Notation) adalah format pertukaran data yang ringan, independen bahasa, dan banyak diadopsi serta didukung oleh berbagai bahasa pemrograman dan kerangka kerja. Ini adalah pilihan yang baik untuk pertukaran data ketika dibutuhkan format yang sederhana, mudah dibaca, mendukung struktur data kompleks, dan dapat dengan mudah dibagikan antar program komputer yang berbeda.

Kasus penggunaan yang tepat untuk JSON adalah saat ada kebutuhan untuk bertukar data antar aplikasi berbasis web, seperti ketika Anda mengisi formulir di sebuah situs web dan informasinya dikirim ke server untuk diproses. 

JSON ideal untuk skenario ini karena merupakan format yang ringan dan efisien, membutuhkan lebih sedikit bandwidth dan ruang penyimpanan dibandingkan format lain seperti XML. Selain itu, JSON mendukung struktur data kompleks seperti objek dan array bertingkat, sehingga memudahkan representasi dan pertukaran data terstruktur antar sistem yang berbeda. Beberapa kasus penggunaan lain untuk format JSON adalah:

  1. Application Programming Interface (API). JSON umum digunakan untuk membangun API (Application Programming Interfaces) yang memungkinkan berbagai sistem dan aplikasi saling berkomunikasi. Misalnya, banyak API berbasis web menggunakan JSON sebagai format data untuk bertukar data antar aplikasi, sehingga mudah diintegrasikan dengan berbagai bahasa pemrograman dan platform.
  2. File Konfigurasi. JSON menyediakan format yang sederhana dan mudah dibaca untuk menyimpan dan mengambil data konfigurasi. Ini dapat mencakup pengaturan aplikasi, seperti tata letak antarmuka pengguna atau preferensi pengguna.
  3. IoT (Internet of Things).  Perangkat IoT sering menghasilkan data dalam jumlah besar, yang dapat disimpan dan dikirimkan antara sensor dan perangkat lain dengan lebih efisien menggunakan JSON. 

Proses permintaan JSON

Contoh data JSON

python_obj = {
  "name": "John Doe",
  "age": 30,
  "email": "[email protected]",
  "is_employee": True,
  "hobbies": [
    "reading",
    "playing soccer",
    "traveling"
  ],
  "address": {
    "street": "123 Main Street",
    "city": "New York",
    "state": "NY",
    "zip": "10001"
  }
}

print(python_obj)

Pada contoh ini, kita memiliki objek JSON yang merepresentasikan seseorang. Objek tersebut memiliki beberapa properti: name, age, email, dan is_employee. Properti hobbies adalah sebuah array yang berisi tiga string. Properti address adalah objek dengan beberapa propertinya sendiri seperti street, city, state, dan zip.

Perhatikan bahwa data JSON biasanya diformat sebagai serangkaian pasangan key-value, dengan key direpresentasikan sebagai string dan value direpresentasikan dalam berbagai tipe seperti string, number, boolean, array, atau object.

Kelebihan dan Kekurangan menggunakan JSON

Di bawah ini, kami menyoroti beberapa hal positif dan negatif saat menggunakan JSON. 

Kelebihan bekerja dengan file JSON:

Beberapa keunggulan utama JSON antara lain karena JSON:

  1. Ringan dan mudah dibaca. File JSON mudah dibaca dan dipahami, bahkan untuk pengguna non-teknis. File ini juga ringan, sehingga mudah ditransmisikan melalui internet.
  2. Interoperabel: File JSON bersifat interoperabel, artinya dapat dengan mudah dipertukarkan antar sistem dan platform yang berbeda. Ini karena JSON adalah format standar yang didukung secara luas, dan banyak aplikasi serta layanan menggunakan JSON untuk pertukaran data. Akibatnya, bekerja dengan file JSON dapat memudahkan integrasi berbagai bagian sistem atau berbagi data antar aplikasi yang berbeda.
  3. Mudah divalidasi: File JSON dapat dengan mudah divalidasi terhadap sebuah skema untuk memastikan bahwa file tersebut sesuai dengan struktur atau seperangkat aturan tertentu. Ini dapat membantu menemukan kesalahan dan inkonsistensi data sejak awal, menghemat waktu dan mencegah masalah di kemudian hari. Skema JSON juga dapat digunakan untuk otomatis menghasilkan dokumentasi untuk data yang disimpan dalam file JSON.

Kekurangan bekerja dengan file JSON:

  1. Dukungan terbatas untuk struktur data kompleks: Meskipun file JSON mendukung berbagai tipe data, JSON kurang cocok untuk menyimpan struktur data yang kompleks seperti grafik atau pohon. Ini dapat mempersulit bekerja dengan tipe data tertentu menggunakan file JSON.
  2. Tidak ada penegakan skema: File JSON tidak menegakkan skema apa pun, yang berarti dimungkinkan menyimpan data yang tidak konsisten atau tidak valid dalam file JSON. Ini dapat menyebabkan kesalahan dan bug pada aplikasi yang bergantung pada data dalam file tersebut.
  3. Kemampuan kueri dan pengindeksan terbatas: File JSON tidak menyediakan tingkat kemampuan kueri dan pengindeksan yang sama seperti basis data tradisional. Hal ini dapat mempersulit melakukan pencarian yang kompleks atau mengambil subset data tertentu dari file JSON berukuran besar.

Alternatif Teratas untuk JSON demi Pertukaran Data yang Efisien


Ada beberapa alternatif JSON yang dapat digunakan untuk pertukaran atau penyimpanan data, masing-masing dengan kelebihan dan kekurangannya. Beberapa alternatif populer untuk JSON adalah:

  1. XML (Extensible Markup Language). XML adalah bahasa markup yang menggunakan tag untuk mendefinisikan elemen dan atribut untuk mendeskripsikan data. Ini adalah format yang lebih verbose daripada JSON, tetapi memiliki dukungan kuat untuk validasi skema dan struktur dokumen.
  2. YAML (Yet Another Markup Language). YAML adalah format serialisasi data yang dapat dibaca manusia dan dirancang agar mudah dibaca serta ditulis. Format ini lebih ringkas daripada XML dan mendukung tipe data kompleks serta komentar.
  3. MessagePack. MessagePack adalah format serialisasi biner yang dirancang lebih ringkas dan efisien daripada JSON. Mendukung tipe data kompleks dan ideal untuk transfer data melalui jaringan berbandwidth rendah.
  4. Protocol Buffers. Protocol Buffers adalah format serialisasi biner yang dikembangkan oleh Google. Dirancang sangat efisien dan memiliki dukungan kuat untuk validasi skema, sehingga ideal untuk sistem terdistribusi skala besar.
  5. BSON (Binary JSON). BSON adalah format serialisasi biner yang memperluas format JSON dengan tipe data tambahan dan optimalisasi untuk efisiensi. Dirancang untuk penyimpanan dan transfer data yang efisien di basis data MongoDB.

Pilihan format pertukaran data bergantung pada kasus penggunaan dan kebutuhan aplikasi yang spesifik. JSON tetap menjadi pilihan populer karena kesederhanaan, fleksibilitas, dan adopsinya yang luas, tetapi format lain seperti XML, YAML, MessagePack, Protocol Buffers, dan BSON mungkin lebih sesuai untuk kasus tertentu.

Pustaka Python untuk bekerja dengan data JSON

Ada beberapa paket Python populer yang dapat Anda gunakan untuk bekerja dengan file JSON:

  1. json. Ini adalah paket bawaan Python yang menyediakan metode untuk melakukan enkode dan dekode data JSON.
  2. simplejson. Paket ini menyediakan encoder dan decoder JSON yang cepat dengan dukungan untuk tipe khusus Python.
  3. ujson. Paket ini adalah encoder dan decoder JSON ultra-cepat untuk Python.
  4. jsonschema. Paket ini menyediakan cara untuk memvalidasi data JSON terhadap skema yang ditentukan.

Serialisasi dan Deserialisasi JSON

Serialisasi dan deserialisasi JSON adalah proses mengonversi data JSON ke dan dari format lain, seperti objek atau string Python, untuk mentransmisikan atau menyimpan data.

Serialisasi adalah proses mengonversi objek atau struktur data menjadi string JSON. Proses ini diperlukan untuk mentransmisikan atau menyimpan data dalam format yang dapat dibaca oleh sistem atau program lain. Serialisasi JSON adalah teknik umum yang digunakan dalam pengembangan web, di mana data sering ditransmisikan antar sistem atau aplikasi yang berbeda.

Sebaliknya, deserialisasi adalah proses mengonversi string JSON kembali menjadi objek atau struktur data. Proses ini diperlukan untuk menggunakan data dalam suatu program atau sistem. Deserialisasi JSON sering digunakan dalam pengembangan web untuk mengurai data yang diterima dari API atau sumber lain.

Serialisasi dan deserialisasi JSON adalah teknik penting untuk bekerja dengan data JSON dalam berbagai konteks, mulai dari pengembangan web hingga analisis data dan seterusnya. Banyak bahasa pemrograman menyediakan pustaka atau paket bawaan untuk memudahkan dan mengefisienkan serialisasi serta deserialisasi.

Berikut beberapa fungsi umum dari pustaka json yang digunakan untuk serialisasi dan deserialisasi.

1. json.dumps()

Fungsi ini digunakan untuk men-serialisasi objek Python menjadi string JSON. Fungsi dumps() menerima satu argumen, yaitu objek Python, dan mengembalikan string JSON. Berikut contoh:

import json

# Python object to JSON string
python_obj = {'name': 'John', 'age': 30}

json_string = json.dumps(python_obj)
print(json_string)  

# Expected output: {"name": "John", "age": 30}

2. json.loads()

Fungsi ini digunakan untuk mengurai string JSON menjadi objek Python. Fungsi loads() menerima satu argumen, yaitu string JSON, dan mengembalikan objek Python. Berikut contoh: 

import json

# JSON string to Python object
json_string = '{"name": "John", "age": 30}'

python_obj = json.loads(json_string)

print(python_obj)  

# Expected output: {'name': 'John', 'age': 30}

3. json.dump()

Fungsi ini digunakan untuk men-serialisasi objek Python dan menuliskannya ke file JSON. Fungsi dump() menerima dua argumen, yaitu objek Python dan objek file. Berikut contoh:

import json

# serialize Python object and write to JSON file
python_obj = {'name': 'John', 'age': 30}
with open('data.json', 'w') as file:
    json.dump(python_obj, file)

# No expected output

4. json.load()

Fungsi ini digunakan untuk membaca file JSON dan mengurai isinya menjadi objek Python. Fungsi load() menerima satu argumen, yaitu objek file, dan mengembalikan objek Python. Berikut contoh:

import json

# read JSON file and parse contents
with open('data.json', 'r') as file:
    python_obj = json.load(file)
print(python_obj)  

# Expected output: {'name': 'John', 'age': 30}

Python dan JSON memiliki tipe data yang berbeda, dengan Python menawarkan rentang tipe data yang lebih luas daripada JSON. Sementara Python mampu menyimpan struktur data rumit seperti set dan dictionary, JSON terbatas pada string, number, boolean, array, dan object. Mari kita lihat beberapa perbedaannya:

Python

JSON

dict

Object

list

Array

tuple

Array

str

String

int

Number

float

Number

True

true

False

false

None

null

Daftar Python ke JSON

Untuk mengonversi list Python ke format JSON, Anda dapat menggunakan metode json.dumps() dari pustaka json.

import json

my_list = [1, 2, 3, "four", "five"]

json_string = json.dumps(my_list)

print(json_string)

# Expected output: [1, 2, 3, "four", "five"]

Pada contoh ini, kita memiliki list bernama my_list dengan campuran bilangan bulat dan string. Kemudian kita menggunakan metode json.dumps() untuk mengonversi list menjadi string berformat JSON, yang kita simpan dalam variabel json_string.

Pemformatan Data JSON

Di Python, fungsi json.dumps() menyediakan opsi untuk memformat dan mengurutkan keluaran JSON. Berikut beberapa opsi umum:

1. Indent

Opsi ini menentukan jumlah spasi yang digunakan untuk indentasi pada string JSON keluaran. Contohnya:

import json

data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

json_data = json.dumps(data, indent=2)

print(json_data)

# Expected output: a JSON formatted string with an indentation of 2 spaces for each level of nesting:
# {
#   "name": "John",
#   "age": 30,
#   "city": "New York"
# }

2. Sort_keys

Opsi ini menentukan apakah key dalam string JSON keluaran harus diurutkan secara alfabetis. Contohnya:

import json

data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

json_data = json.dumps(data, sort_keys=True)

print(json_data)

# Expected output: {"age": 30, "city": "New York", "name": "John"}

3. Separators

Opsi ini memungkinkan Anda menentukan pemisah yang digunakan dalam string JSON keluaran. Parameter separators menerima tuple dari dua string, di mana string pertama adalah pemisah antara pasangan key-value objek JSON, dan string kedua adalah pemisah antara item dalam array JSON. Contohnya:

import json

data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

json_data = json.dumps(data, separators=(",", ":"))

print(json_data)

# Expected output: a JSON formatted string with a comma separator between key-value pairs and a colon separator between keys and values:
# {"name":"John","age":30,"city":"New York"}

Contoh Python - data JSON dalam API

import requests
import json

url = "https://jsonplaceholder.typicode.com/posts"
response = requests.get(url)

if response.status_code == 200:
    data = json.loads(response.text)
    print(data)
else:
    print(f"Error retrieving data, status code: {response.status_code}")

# Expected output: a JSON object as the response of the request

KELUARAN YANG DIFORMAT:

Data keluaran

Kode ini menggunakan pustaka requests dan pustaka json di Python untuk melakukan permintaan ke URL "https://jsonplaceholder.typicode.com/posts" dan mengambil data. Baris requests.get(url) melakukan permintaan sebenarnya dan menyimpan respons dalam variabel response.

Baris if response.status_code == 200: memeriksa apakah kode respons 200, yang berarti permintaan berhasil. Jika permintaan berhasil, kode kemudian memuat teks respons ke dalam dictionary Python menggunakan metode json.loads() dan menyimpannya dalam variabel data.


Jika Anda ingin mempelajari lebih lanjut tentang topik ini, lihat tutorial kami tentang Web API, Python Requests & Melakukan HTTP Request di Python.

Mengoptimalkan Performa JSON di Python

Saat bekerja dengan data JSON dalam jumlah besar di Python, penting untuk mengoptimalkan performa kode agar berjalan efisien. Berikut beberapa kiat untuk mengoptimalkan performa JSON di Python:

  1. Gunakan pustaka cjson atau ujson. Pustaka ini lebih cepat daripada pustaka JSON standar di Python dan dapat meningkatkan performa serialisasi serta deserialisasi JSON secara signifikan.
  2. Hindari konversi yang tidak perlu. Bolak-balik mengonversi antara objek Python dan data JSON dapat mahal secara performa. Jika memungkinkan, cobalah bekerja langsung dengan data JSON dan hindari konversi yang tidak perlu.
  3. Gunakan generator untuk data JSON besar. Saat bekerja dengan data JSON dalam jumlah besar, penggunaan generator dapat membantu mengurangi penggunaan memori dan meningkatkan performa.
  4. Minimalkan overhead jaringan. Saat mentransmisikan data JSON melalui jaringan, meminimalkan jumlah data yang ditransfer dapat meningkatkan performa. Gunakan teknik kompresi seperti gzip untuk mengurangi ukuran data JSON sebelum dikirimkan melalui jaringan.
  5. Gunakan caching. Jika Anda sering mengakses data JSON yang sama, melakukan caching data dapat meningkatkan performa dengan mengurangi jumlah permintaan untuk memuat data.
  6. Optimalkan struktur data: Struktur data JSON juga dapat memengaruhi performa. Menggunakan struktur data yang lebih sederhana dan datar dapat meningkatkan performa dibandingkan struktur yang kompleks dan bertingkat.

Keterbatasan format JSON

Meskipun JSON adalah format populer untuk pertukaran data di banyak aplikasi, ada beberapa keterbatasan implementasi yang perlu diperhatikan:

  1. Keterbatasan dukungan untuk beberapa tipe data. JSON memiliki dukungan terbatas untuk tipe data tertentu, seperti data biner, tanggal, dan waktu. Meskipun ada solusi untuk merepresentasikan tipe-tipe ini di JSON, hal tersebut dapat membuat serialisasi dan deserialisasi menjadi lebih rumit.
  2. Tidak mendukung komentar. Berbeda dengan format lain seperti YAML dan XML, JSON tidak mendukung komentar. Ini dapat mempersulit penambahan komentar pada data JSON untuk memberikan konteks atau dokumentasi.
  3. Fleksibilitas terbatas untuk ekstensi. Meskipun JSON mendukung ekstensi melalui properti kustom atau properti $schema, format ini tidak menyediakan fleksibilitas untuk ekstensi sebanyak format lain seperti XML atau YAML.
  4. Tidak ada standar untuk mempertahankan urutan key. JSON tidak memiliki cara standar untuk mempertahankan urutan key dalam sebuah objek, sehingga menyulitkan untuk membandingkan atau menggabungkan objek JSON.
  5. Dukungan terbatas untuk referensi sirkular. JSON memiliki dukungan terbatas untuk referensi sirkular, yaitu ketika sebuah objek merujuk kembali ke dirinya sendiri. Hal ini dapat menyulitkan untuk merepresentasikan beberapa struktur data dalam JSON.

Penting untuk menyadari keterbatasan implementasi ini saat bekerja dengan data JSON untuk memastikan bahwa format tersebut sesuai dengan kebutuhan Anda dan untuk menghindari potensi masalah dalam serialisasi, deserialisasi, dan representasi data.

Kesimpulan

JSON adalah format serbaguna dan banyak digunakan untuk pertukaran data dalam pengembangan web modern, dan Python menyediakan seperangkat alat yang andal untuk bekerja dengan data JSON. Baik Anda membangun API maupun bekerja dengan aplikasi web sisi klien, memahami dasar-dasar JSON di Python adalah keterampilan penting bagi pengembang modern mana pun. Dengan menguasai teknik-teknik yang diuraikan dalam tutorial ini, Anda akan siap bekerja dengan data JSON di Python dan membangun aplikasi yang tangguh serta skalabel yang memanfaatkan kekuatan format pertukaran data ini.

Jika Anda ingin mempelajari cara membangun pipeline untuk mengimpor data yang disimpan dalam format penyimpanan umum, lihat kursus Streamlined Data Ingestion with pandas kami. Anda akan menggunakan pandas, pustaka Python utama untuk analitik, untuk mengambil data dari berbagai sumber, termasuk spreadsheet berisi respons survei, basis data permintaan layanan publik, dan API dari situs ulasan populer. 

FAQs

Bagaimana cara menangani file JSON yang terlalu besar untuk dimuat ke memori?

Untuk bekerja dengan file JSON berukuran besar yang tidak muat di memori, Anda dapat memproses data secara bertahap menggunakan pustaka ijson di Python atau membaca file baris demi baris jika JSON terstruktur sebagai rangkaian objek yang lebih kecil. Contohnya:

import ijson

with open('large_file.json', 'r') as file:
    for item in ijson.items(file, 'item'):
        print(item)  # Process each JSON item individually

Bagaimana cara menggabungkan dua objek JSON di Python?

Anda dapat menggabungkan dua objek JSON dengan terlebih dahulu mendeserialisasikannya menjadi dictionary Python, lalu memperbarui salah satu dictionary dengan isi dictionary lainnya:

import json

json1 = '{"name": "Alice", "age": 25}'
json2 = '{"city": "New York", "hobbies": ["reading", "cycling"]}'

dict1 = json.loads(json1)
dict2 = json.loads(json2)

dict1.update(dict2)
merged_json = json.dumps(dict1)

print(merged_json)
# Output: {"name": "Alice", "age": 25, "city": "New York", "hobbies": ["reading", "cycling"]}

Apakah data JSON dapat menyertakan komentar, dan bagaimana menanganinya di Python?

JSON tidak secara native mendukung komentar, tetapi jika Anda bekerja dengan file JSON non-standar yang menyertakan komentar (misalnya menggunakan // atau /* */), Anda dapat melakukan praproses file untuk menghapusnya sebelum parsing. Berikut contohnya:

import json
import re

with open('file_with_comments.json', 'r') as file:
    content = file.read()

# Remove comments
content = re.sub(r'//.*?$|/\*.*?\*/', '', content, flags=re.DOTALL | re.MULTILINE)

data = json.loads(content)
print(data)

Moez Ali's photo
Author
Moez Ali
LinkedIn
Twitter

Data Scientist, Pendiri & Kreator PyCaret

Topik

Pelajari lebih lanjut tentang Python

Kursus

Pengantar Basis Data di Python

4 Hr
101.2K
Dalam kursus ini, Anda akan mempelajari dasar-dasar basis data relasional dan cara berinteraksi dengannya.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow
Terkait

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat Lebih BanyakLihat Lebih Banyak