Menggunakan JSON sebagai “Database” di PHP

Kadang kita ingin menyimpan data sederhana tanpa harus repot setup MySQL atau PostgreSQL. Salah satu alternatif ringan adalah menggunakan file JSON sebagai “database”. JSON mudah dibaca, fleksibel, dan PHP sudah punya fungsi bawaan untuk mengolahnya.

Di artikel ini, kita akan coba dua pendekatan:

  1. Query manual dengan foreach + preg_match.
  2. Menggunakan library JsonQ supaya query terasa mirip SQL.

A. Query JSON secara manual di PHP

Misalkan kita punya file data.json seperti ini:

[ 
{ "id": 1, "kode": "DGS123", "nama": "Edy" }, 
{ "id": 2, "kode": "SPI2025", "nama": "Santoso" }, 
{ "id": 3, "kode": "ABC999", "nama": "Guest" } 
]

1. Membaca file JSON

<?php
$json = file_get_contents("data.json");
$data = json_decode($json, true); // true agar jadi array asosiatif

2. “Query” dengan loop (foreach)

Misalnya kita mau ambil semua data, lalu menyusun array baru:

$result = [];
foreach ($data as $row) {
    $result[] = [
        "ID"   => $row["id"],
        "Kode" => $row["kode"],
        "Nama" => $row["nama"]
    ];
}

print_r($result);

Outputnya berupa array baru:

Array
(
    [0] => Array ( [ID] => 1 [Kode] => DGS123 [Nama] => Edy )
    [1] => Array ( [ID] => 2 [Kode] => SPI2025 [Nama] => Santoso )
    [2] => Array ( [ID] => 3 [Kode] => ABC999 [Nama] => Guest )
)

3. “Where” dengan preg_match

Seperti contoh regex sebelumnya, kita bisa filter hanya yang kode diawali DGS atau SPI:

$filtered = [];
foreach ($data as $row) {
    if (preg_match('/^(DGS|SPI)/', $row['kode'])) {
        $filtered[] = $row;
    }
}

print_r($filtered);

Hasilnya:

Array
(
    [0] => Array ( [id] => 1 [kode] => DGS123 [nama] => Edy )
    [1] => Array ( [id] => 2 [kode] => SPI2025 [nama] => Santoso )
)

Dengan cara ini, kita bisa meniru SELECT ... WHERE sederhana hanya dengan PHP bawaan.

B. Query JSON dengan Library JsonQ

Kalau ingin lebih rapi, kita bisa menggunakan JsonQ, yaitu library kecil yang memungkinkan kita query JSON mirip database.

1. Instalasi JsonQ

Jika menggunakan Composer, jalankan:

composer require nahid/jsonq

2. Contoh penggunaan

<?php
require 'vendor/autoload.php';

use Nahid\JsonQ\Jsonq;

$j = new Jsonq('data.json');

// Ambil semua data
$all = $j->get();
print_r($all);

// Query dengan where
$result = $j->from('.')
    ->where('kode', 'regex', '/^(DGS|SPI)/')
    ->get();

print_r($result);

3. Hasil query dengan where

Array
(
    [0] => Array ( [id] => 1 [kode] => DGS123 [nama] => Edy )
    [1] => Array ( [id] => 2 [kode] => SPI2025 [nama] => Santoso )
)

Kesimpulan

  • Kalau hanya butuh filter sederhana, cukup gunakan foreach + preg_match.
  • Kalau data makin kompleks dan query banyak, lebih enak pakai library seperti JsonQ agar kodenya rapi dan mudah dibaca.

Dengan dua pendekatan ini, kamu bisa pakai JSON sebagai database mini tanpa harus install DBMS berat. Cocok untuk aplikasi kecil, prototyping, atau belajar dasar query data di PHP.

Spread the love

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.