Kembali ke Daftar Isi 📚

🌟 Additional 02: JSON Crash Courses 🌴

"JSON itu kayak kotak penyimpanan ajaib, bikin data kita rapi dan gampang diakses! 🗂️✨"

Doa: "Ya Tuhan, bantu kami mengolah data dengan JSON biar program kami mendukung lingkungan dan komunitas. Aamiin. 🙏"

Yo, bro, selamat datang di JSON Crash Courses, bagian spesial dari Tutorial Python ala Arry Hutomo! 🚀 Di sini, kita bakal ngegas belajar JSON (JavaScript Object Notation) dari nol sampe jago, pake 10 contoh query Python dari yang super gampang sampe yang bikin otak ngebul! 💥 JSON itu kayak kotak penyimpanan digital yang super rapi, cocok buat ngatur data konservasi mangrove, donasi, atau laporan kegiatan, kayak yang dibutuhin tim BioMac di Chapter 20. Kita akan pake modul json dari Chapter 19, plus sentuhan dari Chapter 10-18 (modul, error handling, OOP, regex, datetime, logging), dengan gaya milenial yang asik dan penjelasan yang bikin pemula ngerti. Yuk, kita jadi pengelola data kece bareng Mas Arry Hutomo dan ECC Team! 😎🌱

🎯 Tujuan Pembelajaran

🗣️ Cerita Keren: Mas Azmi Nanya, Mas Arry Jawab! 💪

Mas Azmi: "Mas Arry, tim BioMac butuh ngelola data kegiatan, donasi, sama jadwal tanam pohon pake cara yang rapi. Aku denger JSON bagus buat ini, tapi aku ga ngerti caranya. Bisa ajarin dari awal sampe bikin sistem keren kayak di Chapter 20? 🧐😍"

Mas Arry: "Chill, Mas Azmi! 😎 JSON itu gampang banget kalo dijelasin step-by-step. Aku sama ECC Team bakal bikin JSON Crash Courses dengan 10 contoh, dari yang simpel kayak nyanyi lagu pop sampe yang kompleks kayak komposer symphony! 🎶 Kita bikin sistem yang bantu BioMac, plus penjelasan detail biar kamu jago sendiri. Deal? 💪"

Mas Azmi: "Kece banget, Mas! 😍 Aku pengen contoh yang bener-bener praktis, dari yang gampang sampe yang bikin tim kagum. Bisa? 🚀"

Mas Arry: "Beres, bro! 😎 Kita bikin 10 variasi query Python, mulai dari nyimpen data pohon sampe laporan kegiatan dengan logging dan datetime. Semua pake JSON, dan aku kasih narasi yang bikin kamu ngerti kenapa kodenya begitu. Yuk, ngegas bareng! 🚴‍♂️"

🛠️ Tutorial Python: JSON Crash Courses

Berikut 10 contoh query Python yang dirancang untuk ngajarin JSON dari level pemula sampe pro, dengan tema konservasi mangrove dan donasi untuk dukung isu lingkungan dan sosial ekonomi. Setiap query punya penjelasan detail, output, logika, dan Do and Don'ts, ditulis dengan gaya asik ala Arry Hutomo. Yuk, kita mulai petualangan JSON! 😎🚀

1. Nyimpen Data Pohon ke JSON (Super Gampang) 🌱

Konsep: JSON (Chapter 19) bikin kita bisa ubah data Python (kayak dictionary) ke string JSON yang rapi, kayak nyimpen data pohon di kotak digital.

Cara Import: Butuh modul json yang udah ada di Python. Jalankan dengan python nama_file.py.

import json

data_pohon = {"acara": "Tanam Pohon", "pohon": 10, "lokasi": "Pantai"}
json_data = json.dumps(data_pohon)
print(f"Data dalam JSON: {json_data}")

Output:

Data dalam JSON: {"acara": "Tanam Pohon", "pohon": 10, "lokasi": "Pantai"}

Penjelasan Output: Outputnya nunjukin string JSON: {"acara": "Tanam Pohon", "pohon": 10, "lokasi": "Pantai"}. Ini adalah dictionary Python yang diubah jadi format JSON pake json.dumps(). String JSON pake kutip ganda untuk teks, bikin data rapi dan universal, kayak nyimpen lagu di playlist digital! 🎶

Penjelasan Query: Bayangin kamu punya catatan sederhana tentang acara tanam pohon BioMac, dan kamu mau simpen dalam format yang gampang dibaca komputer. Kita bikin dictionary data_pohon dengan tiga kunci: acara, pohon, dan lokasi. Pake json.dumps(data_pohon), kita ubah dictionary ini jadi string JSON, trus simpen di json_data dan cetak. Ini super simpel, cocok buat pemula, dan bikin data pohon terstruktur, kayak nyanyi lagu pop yang gampang diinget! 🌱😎

Logika Query: Logikanya kayak nyimpen catatan di kotak ajaib. Dictionary dipilih karena gampang nyimpen data dengan kunci-nilai (kayak "pohon": 10). json.dumps() ubah dictionary ke string JSON, format universal yang bisa dibaca di mana aja, misalnya buat kirim data ke tim lain. Kita cetak biar lihat hasilnya, tapi di dunia nyata, string JSON ini bisa disimpen ke file atau dikirim ke server. Struktur ini efisien buat BioMac, kayak nyanyi lagu dan simpen nadanya di kotak digital! 🎵🗂️

Do and Don'ts:

"Data JSON yang rapi itu kayak lagu pop yang enak didenger. Simpel tapi bikin happy! 🎶💚"

2. Baca JSON ke Dictionary (Gampang) 📖

Konsep: Kita bisa ubah string JSON kembali ke dictionary Python pake json.loads(), kayak buka kotak penyimpanan dan ambil isinya.

Cara Import: Butuh modul json. Jalankan dengan python nama_file.py.

import json

json_data = '{"acara": "Tanam Pohon", "pohon": 10, "lokasi": "Pantai"}'
data = json.loads(json_data)
print(f"Data dalam dictionary: {data}")

Output:

Data dalam dictionary: {'acara': 'Tanam Pohon', 'pohon': 10, 'lokasi': 'Pantai'}

Penjelasan Output: Outputnya nunjukin dictionary Python: {'acara': 'Tanam Pohon', 'pohon': 10, 'lokasi': 'Pantai'}. String JSON diubah kembali ke dictionary pake json.loads(), bikin data bisa diolah lagi, kayak buka playlist dan lihat detail lagu! 🎶

Penjelasan Query: Bayangin tim BioMac dapet string JSON dari server, dan mereka mau olah datanya di Python. Kita bikin string JSON json_data dengan data acara tanam pohon. Pake json.loads(json_data), kita ubah string itu jadi dictionary, simpen di data, trus cetak. Ini gampang, bikin data JSON bisa diakses kayak dictionary biasa, cocok buat tim yang perlu ekstrak info pohon atau lokasi. Gampang diinget, kayak nyanyi lagu pop dan baca liriknya! 📖😎

Logika Query: Logikanya kayak buka kotak ajaib. String JSON adalah format data universal, tapi untuk olah di Python, kita ubah ke dictionary pake json.loads(). Dictionary bikin kita bisa akses data pake kunci, misalnya data["pohon"] ngasih 10. Kita cetak dictionary biar lihat hasilnya, tapi di dunia nyata, kita bisa olah lebih lanjut, kayak hitung total pohon. Struktur ini bikin BioMac gampang ngelola data, kayak buka playlist dan mainkan lagu favorit! 🎵📊

Do and Don'ts:

"Baca JSON itu kayak buka kotak harta. Data siap diolah, bro! 📖💚"

3. JSON dengan Indentasi (Gampang) 🌴

Konsep: Pake parameter indent di json.dumps() bikin JSON rapi dan gampang dibaca manusia, kayak nyusun playlist aesthetic.

Cara Import: Butuh modul json. Jalankan dengan python nama_file.py.

import json

data = {
    "acara": "Tanam Pohon",
    "donasi": 500000,
    "lokasi": "Pantai"
}
json_data = json.dumps(data, indent=2)
print(f"Data dalam JSON:\n{json_data}")
_threshold_0.8

Output:

Data dalam JSON:
{
  "acara": "Tanam Pohon",
  "donasi": 500000,
  "lokasi": "Pantai"
}

Penjelasan Output: Outputnya nunjukin JSON yang rapi dengan indentasi 2 spasi, tiap kunci-nilai di baris baru. Data acara, donasi, dan lokasi tersusun jelas, bikin gampang dibaca tim BioMac, kayak playlist dengan judul lagu yang rapi! 🎶

Penjelasan Query: Bayangin tim BioMac mau share data tanam pohon ke donatur, tapi harus rapi biar gampang dibaca. Kita bikin dictionary data dengan info acara, donasi, dan lokasi. Pake json.dumps(data, indent=2), kita ubah ke JSON dengan indentasi, simpen di json_data, trus cetak dengan tambahan \n biar jelas. Ini bikin JSON aesthetic, cocok buat laporan atau presentasi, kayak nyanyi lagu dengan lirik yang ditata rapi! 🌴😎

Logika Query: Logikanya kayak nyusun kotak penyimpanan yang cantik. Dictionary nyimpen data dengan kunci-nilai, trus json.dumps() ubah ke JSON. Parameter indent=2 bikin tiap level JSON punya 2 spasi indentasi, bikin output rapi kayak buku catatan aesthetic. Kita cetak biar lihat hasilnya, tapi di dunia nyata, JSON ini bisa disimpen ke file buat laporan BioMac. Struktur ini bikin data gampang dipahami, kayak nyanyi lagu dengan lirik yang tersusun cantik! 🎵📊

Do and Don'ts:

"JSON yang rapi itu kayak taman yang tertata. Bikin hati tenang, bro! 🌴💚"

4. JSON dengan Data Bersarang (Masih Gampang) 🌿

Konsep: JSON bisa nyimpen data bersarang (dictionary dalam dictionary), kayak kotak penyimpanan dengan laci-laci kecil, cocok buat data kompleks BioMac.

Cara Import: Butuh modul json. Jalankan dengan python nama_file.py.

import json

data = {
    "acara": "Tanam Pohon",
    "detail": {
        "donasi": 500000,
        "pohon": 10,
        "lokasi": "Pantai"
    }
}
json_data = json.dumps(data, indent=2)
print(f"Data dalam JSON:\n{json_data}")

Output:

Data dalam JSON:
{
  "acara": "Tanam Pohon",
  "detail": {
    "donasi": 500000,
    "pohon": 10,
    "lokasi": "Pantai"
  }
}

Penjelasan Output: Outputnya nunjukin JSON bersarang: kunci detail punya dictionary sendiri dengan donasi, pohon, dan lokasi. Indentasi 2 spasi bikin struktur jelas, kayak buka album dengan folder lagu di dalamnya! 🎶

Penjelasan Query: Bayangin BioMac mau simpen data acara tanam pohon dengan detail terpisah, misalnya donasi dan lokasi dalam satu grup. Kita bikin dictionary data dengan kunci acara dan detail, di mana detail adalah dictionary lain. Pake json.dumps(data, indent=2), kita ubah ke JSON rapi, trus cetak. Ini bikin data kompleks tetap terorganisir, cocok buat laporan BioMac, kayak nyanyi lagu dengan lirik yang punya sub-bagian! 🌿😎

Logika Query: Logikanya kayak bikin kotak dengan laci-laci. Dictionary luar nyimpen info utama (acara), dan dictionary dalam (detail) nyimpen info tambahan. json.dumps() otomatis ngatur struktur bersarang dengan indentasi, bikin JSON gampang dibaca. Kita cetak biar lihat hasilnya, tapi JSON ini bisa disimpen atau dikirim ke tim lain. Struktur ini bikin BioMac gampang ngelola data kompleks, kayak nyanyi lagu dengan lirik yang punya bagian chorus dan verse! 🎵📊

Do and Don'ts:

"Data bersarang itu kayak album dengan folder lagu. Teratur dan kece! 🌿💚"

5. JSON dengan List dan For Loop (Mulai Agak Menantang) 📋

Konsep: JSON bisa nyimpen list dengan banyak dictionary, cocok buat nyimpen banyak data kegiatan BioMac. Kita pake loop untuk olah data sebelum simpen ke JSON.

Cara Import: Butuh modul json. Jalankan dengan python nama_file.py.

import json

data = [
    {"acara": "Tanam Pohon 1", "pohon": 10, "donasi": 500000},
    {"acara": "Tanam Pohon 2", "pohon": 5, "donasi": 300000}
]
for item in data:
    item["biaya_per_pohon"] = item["donasi"] / item["pohon"]
json_data = json.dumps(data, indent=2)
print(f"Data dalam JSON:\n{json_data}")

Output:

Data dalam JSON:
[
  {
    "acara": "Tanam Pohon 1",
    "pohon": 10,
    "donasi": 500000,
    "biaya_per_pohon": 50000.0
  },
  {
    "acara": "Tanam Pohon 2",
    "pohon": 5,
    "donasi": 300000,
    "biaya_per_pohon": 60000.0
  }
]

Penjelasan Output: Outputnya nunjukin JSON dengan list dua dictionary. Tiap dictionary punya kunci baru biaya_per_pohon, dihitung dari donasi dibagi pohon (500000/10 = 50000, 300000/5 = 60000). Indentasi bikin data rapi, kayak playlist dengan detail lagu! 🎶

Penjelasan Query: Bayangin BioMac punya dua acara tanam pohon, dan mereka mau hitung biaya rata-rata per pohon sebelum simpen ke JSON. Kita bikin list data dengan dua dictionary. Pake loop for, kita tambah kunci biaya_per_pohon dengan menghitung donasi/pohon. Terus, ubah ke JSON pake json.dumps(data, indent=2) dan cetak. Ini bikin data analitik gampang disimpen, cocok buat laporan BioMac, kayak nyanyi lagu sambil hitung nada rata-rata! 📋😎

Logika Query: Logikanya kayak bikin playlist dengan analisis. List nyimpen banyak dictionary, tiap dictionary wakilin satu acara. Loop for akses tiap dictionary, hitung donasi/pohon, dan tambah kunci baru. json.dumps() ubah list ke JSON rapi. Kita cetak biar lihat hasilnya, tapi JSON ini bisa disimpen ke file buat analisis BioMac. Struktur ini efisien, kayak nyanyi lagu dengan playlist yang punya data tambahan! 🎵📊

Do and Don'ts:

"List di JSON itu kayak playlist dengan banyak lagu. Analisis bikin makin keren! 📋💚"

6. JSON dengan Input (Agak Menantang) 💸

Konsep: Kita bisa minta input user untuk bikin data JSON, cocok buat tim BioMac yang input data kegiatan di lapangan.

Cara Import: Butuh modul json. Jalankan dengan python nama_file.py.

import json

data = []
for i in range(2):
    acara = input(f"Masukkan nama acara ke-{i+1}: ")
    donasi = int(input(f"Masukkan donasi untuk {acara} (Rp): "))
    pohon = int(input(f"Masukkan jumlah pohon untuk {acara}: "))
    data.append({"acara": acara, "donasi": donasi, "pohon": pohon})
json_data = json.dumps(data, indent=2)
print(f"Data dalam JSON:\n{json_data}")

Output (contoh input: "Acara 1", 500000, 10, "Acara 2", 300000, 5):

Masukkan nama acara ke-1: Acara 1
Masukkan donasi untuk Acara 1 (Rp): 500000
Masukkan jumlah pohon untuk Acara 1: 10
Masukkan nama acara ke-2: Acara 2
Masukkan donasi untuk Acara 2 (Rp): 300000
Masukkan jumlah pohon untuk Acara 2: 5
Data dalam JSON:
[
  {
    "acara": "Acara 1",
    "donasi": 500000,
    "pohon": 10
  },
  {
    "acara": "Acara 2",
    "donasi": 300000,
    "pohon": 5
  }
]

Penjelasan Output: Outputnya nunjukin prompt input, trus JSON dengan list dua dictionary berdasarkan input user. Acara 1 punya 500000 donasi dan 10 pohon, Acara 2 punya 300000 donasi dan 5 pohon. JSON rapi dengan indentasi, kayak playlist yang dibikin dari request penonton! 🎶

Penjelasan Query: Bayangin tim BioMac di lapangan, input data acara tanam pohon langsung ke sistem. Kita bikin list kosong data, trus loop for minta input dua acara: nama, donasi, dan pohon. Tiap input disimpen ke dictionary, ditambah ke list pake append(). Terus, ubah ke JSON pake json.dumps(data, indent=2) dan cetak. Ini bikin sistem interaktif, cocok buat BioMac, kayak nyanyi lagu berdasarkan request penonton! 💸😎

Logika Query: Logikanya kayak bikin playlist dari input penonton. List data nyimpen dictionary tiap acara, bikin fleksibel untuk tambah data. Loop for minta input tiga hal: acara (string), donasi (integer), dan pohon (integer). Dictionary dibikin per input, ditambah ke list. json.dumps() ubah list ke JSON rapi. Kita cetak biar lihat hasilnya, tapi JSON ini bisa disimpen ke file. Struktur ini bikin BioMac gampang input data, kayak nyanyi lagu dengan lirik dari penonton! 🎵📊

Do and Don'ts:

"Input user ke JSON itu kayak request lagu dari penonton. Bikin sistem hidup, bro! 💸💚"

7. JSON dengan Try-Except (Menantang) 🚨

Konsep: Pake try-except untuk nangani error saat parsing JSON atau validasi data, bikin sistem BioMac tangguh.

Cara Import: Butuh modul json. Jalankan dengan python nama_file.py.

import json

json_data = '{"acara": "Tanam Pohon", "donasi": 500000, "pohon": 10}'
try:
    data = json.loads(json_data)
    if data["donasi"] < 0:
        raise ValueError("Donasi tidak boleh negatif!")
    print(f"Data valid: {data}")
except ValueError as e:
    print(f"Error: {e}")
except json.JSONDecodeError:
    print("Error: Format JSON salah! 🚨")

Output:

Data valid: {'acara': 'Tanam Pohon', 'donasi': 500000, 'pohon': 10}

Penjelasan Output: Outputnya nunjukin dictionary: {'acara': 'Tanam Pohon', 'donasi': 500000, 'pohon': 10}. JSON valid, donasi ga negatif, jadi json.loads() sukses dan cetak data. Kalo JSON salah (misalnya kurang kurung kurawal) atau donasi negatif, muncul pesan error, kayak detektif yang cek kualitas lagu! 🎶

Penjelasan Query: Bayangin BioMac dapet JSON dari server, tapi mereka harus pastiin JSON-nya valid dan donasinya ga negatif. Kita bikin string JSON json_data. Dalam try, kita ubah ke dictionary pake json.loads(), cek donasi pake if, dan lempar ValueError kalo negatif. except ValueError nangani error donasi, except json.JSONDecodeError nangani JSON salah. Ini bikin sistem tangguh, cocok buat BioMac, kayak nyanyi lagu sambil cek nada fals! 🚨😎

Logika Query: Logikanya kayak detektif kualitas. json.loads() coba ubah JSON ke dictionary, tapi kalo JSON salah (misalnya kurang koma), JSONDecodeError muncul dan ditangkap. Kalo JSON valid, cek donasi < 0 pake if, lempar ValueError kalo negatif. Dua except nangani error berbeda, kasih pesan jelas. Kalo semua beres, cetak dictionary. Struktur ini bikin BioMac yakin data valid, kayak nyanyi lagu dengan nada yang selalu pas! 🎵📊

Do and Don'ts:

"Error handling di JSON itu kayak jaring pengaman. Bikin sistem tank, bro! 🚨💚"

8. JSON dengan OOP (Agak Sulit) 🏗️

Konsep: Gabungin JSON dengan OOP (Chapter 13-14) untuk bikin kelas yang ngelola data konservasi BioMac, kayak robot penyimpan data.

Cara Import: Butuh modul json. Jalankan dengan python nama_file.py.

import json

class KonservasiMangrove:
    def __init__(self, acara, donasi, pohon):
        self.acara = acara
        self.donasi = donasi
        self.pohon = pohon
    
    def to_json(self):
        data = {
            "acara": self.acara,
            "donasi": self.donasi,
            "pohon": self.pohon,
            "biaya_per_pohon": self.donasi / self.pohon
        }
        return json.dumps(data, indent=2)

kegiatan = KonservasiMangrove("Tanam Pohon", 500000, 10)
json_data = kegiatan.to_json()
print(f"Data dalam JSON:\n{json_data}")

Output:

Data dalam JSON:
{
  "acara": "Tanam Pohon",
  "donasi": 500000,
  "pohon": 10,
  "biaya_per_pohon": 50000.0
}

Penjelasan Output: Outputnya nunjukin JSON dari objek KonservasiMangrove. JSON punya kunci biaya_per_pohon (500000/10 = 50000), dihitung di metode to_json. Indentasi bikin rapi, kayak buka album lagu dengan analisis! 🎶

Penjelasan Query: Bayangin BioMac punya robot yang nyimpen data acara tanam pohon dan hitung biaya per pohon otomatis. Kita bikin kelas KonservasiMangrove dengan atribut acara, donasi, dan pohon. Metode to_json bikin dictionary, tambah kunci biaya_per_pohon, trus ubah ke JSON pake json.dumps(). Ini bikin data terstruktur, cocok buat BioMac, kayak nyanyi lagu sambil pake robot penyanyi! 🏗️😎

Logika Query: Logikanya kayak bikin robot penyimpan. Kelas KonservasiMangrove nyimpen data di atribut pake self. Metode to_json bikin dictionary dari atribut, hitung donasi/pohon, trus ubah ke JSON rapi. Kita bikin objek, panggil to_json, dan cetak. Struktur ini bikin data gampang dikelola, kayak nyanyi lagu dengan robot yang nyanyi bareng! 🎵📊

Do and Don'ts:

"OOP dan JSON itu kayak robot penyanyi. Data rapi, hasil maksimal! 🏗️💚"

9. JSON dengan Logging dan Datetime (Sulit) 📝⏰

Konsep: Gabungin JSON dengan logging (Chapter 18) dan datetime (Chapter 17) untuk nyatet proses dan simpen data kegiatan BioMac dengan waktu.

Cara Import: Butuh modul json, logging, datetime. Jalankan dengan python nama_file.py.

import json
import logging
from datetime import datetime

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
logger = logging.getLogger("BioMac")

data = {
    "acara": "Tanam Pohon",
    "donasi": 500000,
    "pohon": 10,
    "waktu": datetime.now().strftime("%d-%m-%Y %H:%M:%S")
}
logger.info(f"Menyiapkan data: {data}")
json_data = json.dumps(data, indent=2)
logger.info(f"Data dalam JSON:\n{json_data}")

Output:

2025-05-16 07:59:00,123 - BioMac - INFO - Menyiapkan data: {'acara': 'Tanam Pohon', 'donasi': 500000, 'pohon': 10, 'waktu': '16-05-2025 07:59:00'}
2025-05-16 07:59:00,124 - BioMac - INFO - Data dalam JSON:
{
  "acara": "Tanam Pohon",
  "donasi": 500000,
  "pohon": 10,
  "waktu": "16-05-2025 07:59:00"
}

Penjelasan Output: Outputnya nunjukin dua log: pertama, nyatet dictionary dengan waktu; kedua, nyatet JSON rapi. Timestamp (16 Mei 2025, 07:59:00) ditambah otomatis oleh logging. JSON punya kunci waktu dari datetime, bikin laporan BioMac transparan, kayak buku harian digital! 🎶

Penjelasan Query: Bayangin BioMac mau laporan yang nyatet kapan data kegiatan dibikin, lengkap dengan waktu. Kita set logging dengan format kustom biar ada timestamp. Bikin dictionary data dengan kunci waktu dari datetime.now(). Logger nyatet dictionary dan JSON hasil json.dumps(). Ini bikin laporan terdokumentasi, cocok buat BioMac, kayak nyanyi lagu sambil catat waktu nadanya! 📝😎

Logika Query: Logikanya kayak bikin buku harian digital. logging.basicConfig set format log dengan timestamp. Dictionary data nyimpen info kegiatan, termasuk waktu dari datetime.now().strftime(). logger.info nyatet dictionary dan JSON. json.dumps() bikin JSON rapi. Struktur ini bikin BioMac punya jejak proses dan data terstruktur, kayak nyanyi lagu dengan catatan waktu yang rapi! 🎵📊

Do and Don'ts:

"Logging dan JSON itu kayak buku harian digital. Transparan dan kece! 📝💚"

10. Semua Digabung: JSON dengan OOP, Logging, Datetime, dan Regex (Paling Sulit) 🔥

Konsep: Gabungin JSON, OOP, logging, datetime, dan regex (Chapter 16-19) untuk bikin sistem laporan kegiatan BioMac yang super canggih, kayak robot detektif penyimpan data.

Cara Import: Butuh modul json, logging, datetime, re. Jalankan dengan python nama_file.py.

import json
import logging
import re
from datetime import datetime

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)

class PengelolaKegiatan:
    def __init__(self):
        self.data = []
        self.logger = logging.getLogger("BioMac")
        self.logger.info("Pengelola kegiatan dibuat ✅")
    
    def tambah_kegiatan(self, acara, donasi, pohon, lokasi):
        try:
            if donasi < 0 or pohon < 0:
                raise ValueError("Donasi atau pohon tidak boleh negatif!")
            if not re.match(r"^[A-Za-z\s]+$", lokasi):
                raise ValueError("Lokasi hanya boleh huruf dan spasi!")
            kegiatan = {
                "acara": acara,
                "donasi": donasi,
                "pohon": pohon,
                "lokasi": lokasi,
                "waktu": datetime.now().strftime("%d-%m-%Y %H:%M:%S")
            }
            self.data.append(kegiatan)
            self.logger.info(f"Kegiatan {acara} ditambahkan ✅")
        except ValueError as e:
            self.logger.error(f"Error: {e} 🚨")
    
    def to_json(self):
        return json.dumps(self.data, indent=2)

pengelola = PengelolaKegiatan()
try:
    pengelola.tambah_kegiatan("Tanam Pohon 1", 500000, 10, "Pantai")
    pengelola.tambah_kegiatan("Tanam Pohon 2", -300000, 5, "Muara")
except:
    pengelola.logger.error("Error saat input data! 🚨")
print(f"Laporan kegiatan:\n{pengelola.to_json()}")

Output:

2025-05-16 07:59:00,123 - BioMac - INFO - Pengelola kegiatan dibuat ✅
2025-05-16 07:59:00,124 - BioMac - INFO - Kegiatan Tanam Pohon 1 ditambahkan ✅
2025-05-16 07:59:00,125 - BioMac - ERROR - Error: Donasi atau pohon tidak boleh negatif! 🚨
Laporan kegiatan:
[
  {
    "acara": "Tanam Pohon 1",
    "donasi": 500000,
    "pohon": 10,
    "lokasi": "Pantai",
    "waktu": "16-05-2025 07:59:00"
  }
]

Penjelasan Output: Outputnya nunjukin tiga log: pembuatan PengelolaKegiatan, penambahan Tanam Pohon 1, dan error karena donasi negatif di Tanam Pohon 2. JSON akhir cuma punya satu kegiatan (Tanam Pohon 1), karena kegiatan kedua gagal divalidasi. JSON rapi dengan waktu dan data lengkap, kayak buku harian digital yang super canggih! 🎶

Penjelasan Query: Bayangin BioMac punya robot detektif yang input data kegiatan, validasi lokasi pake regex, cek donasi, catat waktu, dan simpen ke JSON dengan log proses. Kita bikin kelas PengelolaKegiatan dengan list data dan logger. Metode tambah_kegiatan validasi donasi dan lokasi, tambah waktu, dan simpen ke list. Metode to_json ubah list ke JSON. Logging nyatet setiap langkah. Ini bikin sistem canggih, cocok buat BioMac, kayak nyanyi symphony dengan robot detektif! 🔥😎

Logika Query: Logikanya kayak bikin robot detektif penyimpan. Kelas PengelolaKegiatan nyimpen data di list, logger nyatet proses. tambah_kegiatan cek donasi/pohon pake if, validasi lokasi pake regex ^[A-Za-z\s]+$, tambah waktu pake datetime, dan simpen ke list. try-except nangani error, logger nyatet sukses atau gagal. to_json ubah list ke JSON rapi. Struktur ini bikin BioMac punya sistem tangguh, kayak nyanyi symphony dengan lirik, waktu, dan catatan rapi! 🎵📊

Do and Don'ts:

"Sistem JSON canggih itu kayak symphony yang bikin bumi tersenyum. Ngegas, bro! 🔥💚"

🌟 Manfaat Nyata untuk BioMac dan Komunitas

🙌 Penutup

Yo, bro, JSON Crash Courses ini bukti bahwa data terstruktur bisa bikin dunia lebih hijau! 🌍 Bersama Mas Azmi, Mas Arry Hutomo, dan ECC Team, kita udah jelajahi JSON dari yang gampang sampe canggih, bikin sistem yang bantu konservasi mangrove dan komunitas. Terus semangat belajar Python, dan bikin solusi yang bikin bumi tersenyum! 😊🚀

Naskah ini dibuat dari Arry Hutomo dan ECC Team untuk Bangsaku yang Kucintai, Indonesia tercinta. 🇮🇩💖