1. Apa itu JSON? (Pengetahuan Dasar)
Gambaran Umum JSON
JSON (JavaScript Object Notation) adalah format data yang sering digunakan untuk komunikasi antara klien dan server. Karena ringan, mudah dibaca, dan memiliki struktur yang sederhana, JSON banyak digunakan dalam aplikasi web maupun aplikasi mobile. JSON berbentuk teks, sehingga dapat dengan mudah digunakan dalam bahasa pemrograman apa pun, menjadikannya sangat serbaguna.
Struktur Dasar JSON
JSON merepresentasikan data dalam pasangan kunci-nilai. Contohnya adalah struktur JSON berikut:
{
"nama": "Sato",
"usia": 30,
"hobi": ["membaca", "film"]
}
Dalam contoh ini, nama
adalah string, usia
adalah angka, dan hobi
adalah array. Karena strukturnya sederhana dan mudah dibaca, pertukaran data menjadi sangat efisien.
Keunggulan JSON
- Ringan dan efisien: Berformat teks, sehingga mengurangi beban jaringan karena ukuran data kecil.
- Kompatibilitas tinggi: Didukung hampir semua bahasa pemrograman, dapat digunakan lintas platform.
- Mudah di-parse: Membaca dan menulis data sederhana, sangat berguna terutama untuk komunikasi API.
2. Operasi JSON dengan Python (Dasar)
Modul json
di Python
Di Python, modul json
memungkinkan pembacaan dan penulisan data JSON dengan mudah. Misalnya, untuk mengubah data JSON menjadi dictionary Python, gunakan fungsi json.loads()
.
import json
json_data = '{"nama": "Sato", "usia": 30}'
python_obj = json.loads(json_data)
print(python_obj) # {'nama': 'Sato', 'usia': 30}
Sebaliknya, untuk mengubah objek Python menjadi format JSON gunakan json.dumps()
.
python_obj = {"nama": "Sato", "usia": 30}
json_data = json.dumps(python_obj, ensure_ascii=False)
print(json_data) # {"nama": "Sato", "usia": 30}
Membaca dan menulis file
Anda juga dapat membaca data JSON dari file atau menulis data ke file.
# Membaca dari file
with open('data.json', 'r') as f:
data = json.load(f)
# Menulis ke file
with open('data.json', 'w') as f:
json.dump(python_obj, f, ensure_ascii=False)
3. Komunikasi JSON dengan Python (Praktis)
Komunikasi API dengan modul requests
Dengan menggunakan modul requests
, Anda dapat dengan mudah mengirim dan menerima data JSON melalui API. Berikut adalah contoh mengirim data JSON menggunakan POST request dan menerima responsenya.
Mengirim JSON dengan POST request
import requests
url = 'https://example.com/api'
data = {'nama': 'Sato', 'usia': 30}
response = requests.post(url, json=data)
json_response = response.json()
print(json_response)
Menerima JSON dengan GET request
Menggunakan GET request juga memungkinkan untuk mengambil data JSON dari API dengan mudah.
response = requests.get('https://example.com/api/user/1')
data = response.json()
print(data)

4. Penanganan Error dan Best Practice
Error handling dalam komunikasi API
Jika terjadi error saat komunikasi API, penting untuk menangani error dengan benar. Contoh berikut menangkap exception seperti error jaringan atau timeout.
try:
response = requests.post(url, json=data)
response.raise_for_status()
except requests.exceptions.HTTPError as errh:
print("Http Error:", errh)
except requests.exceptions.ConnectionError as errc:
print("Error Connecting:", errc)
except requests.exceptions.Timeout as errt:
print("Timeout Error:", errt)
except requests.exceptions.RequestException as err:
print("OOps: Something Else", err)
Proses retry
Jika jaringan tidak stabil, penting untuk menerapkan mekanisme retry. Dengan modul requests
, Anda dapat mengimplementasikan retry menggunakan kelas Retry
.
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
session = requests.Session()
retry = Retry(connect=3, backoff_factor=0.5)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)
response = session.get(url)
5. Validasi JSON
Validasi dengan jsonschema
Untuk memastikan data JSON dari API sesuai dengan format yang diharapkan, Anda dapat menggunakan library jsonschema
untuk melakukan validasi.
from jsonschema import validate, ValidationError
schema = {
"type": "object",
"properties": {
"nama": {"type": "string"},
"usia": {"type": "number"}
},
"required": ["nama", "usia"]
}
json_data = {"nama": "Sato", "usia": 30}
try:
validate(instance=json_data, schema=schema)
print("JSON is valid")
except ValidationError as e:
print("Validation Error:", e)
Mendukung skema yang kompleks maupun objek bersarang, sehingga data dari API dapat diverifikasi dengan pasti.
6. Best Practice Keamanan
Manajemen API key
Jangan hardcode API key di dalam source code. Sebaiknya simpan di environment variable untuk mengurangi risiko keamanan.
import os
api_key = os.getenv('API_KEY')
Sanitasi data
Sebelum mengirim data input dari pengguna ke server, lakukan proses sanitasi untuk melindungi dari serangan SQL Injection atau Cross-Site Scripting (XSS).
from html import escape
safe_data = escape(user_input)