Mengelola data JSON di PHP dan Javascript

JSON jika dilafalkan jadi “jay-son”, singkatan dari JavaScript Object Notation, adalah format pertukaran data berbasis teks yang ringkas dan tidak bergantung pada bahasa pemrograman. sering dianggap sebagai alternatif ringan XML. hampir semua REST API yang pernah saya pakai mengembalikan data dalam bentuk JSON, jadi mau ngoding backend atau frontend, pasti ketemu sama format ini.
awalnya JSON lahir dari bahasa JavaScript, tapi sekarang semua bahasa punya dukungannya. file JSON biasanya berekstensi .json.
Struktur Objek JSON
aturan dasar JSON:
- nama key harus string yang diapit tanda kutip ganda
- nilainya bisa string, angka, array, boolean, null, atau objek JSON lain
berikut syntax dasar JSON:
{
"keyA": "valueA",
"keyB": {
"keyC": "valueB",
"keyD": "valueC"
}
}
JSON mendukung berbagai tipe data:
Number: bilangan bulat atau desimalString: teks yang diapit tanda kutip gandaBoolean:trueataufalseArray: kumpulan nilai yang diapit[ ]dan dipisah komaObject: kumpulan key-value yang diapit{ }dan dipisah komanull: nilai kosong
contoh JSON lengkap semua tipe data:
{
"firstName": "John",
"lastName": "Snow",
"age": 25,
"children": [],
"spouse": null,
"address": {
"street": "7504 Taylor Drive",
"city": "New York City",
"state": "New York",
"postalCode": "11238"
},
"phoneNumbers": [
{
"type": "mobile",
"number": "212 555-3346"
},
{
"type": "fax",
"number": "646 555-4567"
}
]
}
perhatikan key seperti firstName, age, dan address selalu pakai tanda kutip ganda. itu aturan wajib JSON, beda dengan objek JavaScript biasa yang boleh tanpa kutip.
Parsing data JSON di PHP
di PHP, untuk mengubah string JSON menjadi array, pakai json_decode. berikut contohnya:
// menerima data dari API, biasanya string JSON
$response = '{"id":444,"nama":"sigit","status":"single"}';
// melakukan parsing, parameter kedua true menghasilkan array assoc
$user = json_decode($response, true);
echo $user["id"];
// Output: 444
echo $user["nama"];
// Output: sigit
penjelasan :
json_decode($response, true): mengubah string JSON menjadi array PHP. parameter keduatruemembuat hasilnya array, tanpa itu hasilnya objectstdClass- kalau tidak pakai
true, aksesnya jadi$user->idbukan$user["id"]
Mengubah array PHP jadi JSON
kebalikannya, untuk mengirim data dalam bentuk JSON, pakai json_encode:
$user = [
'id' => 444,
'nama' => 'sigit',
];
echo json_encode($user);
// Output: {"id":444,"nama":"sigit"}
contoh ini biasa dipakai untuk mengembalikan respons API:
header('Content-Type: application/json');
echo json_encode(['status' => true, 'message' => 'ok']);
Parsing data JSON di JavaScript
di JavaScript, untuk mengubah string JSON jadi objek, pakai JSON.parse:
// menerima data dari API, biasanya string JSON
const response = '{"id":444,"nama":"sigit","status":"single"}';
// melakukan parsing
const user = JSON.parse(response);
console.log(user.id);
// Output: 444
console.log(user.nama);
// Output: sigit
penjelasan :
JSON.parse(response): mengubah string JSON menjadi objek JavaScriptuser.id: mengambil nilai berdasarkan key
Mengubah objek JavaScript jadi string JSON
kebalikannya, pakai JSON.stringify:
const user = {
id: 444,
nama: 'sigit',
};
console.log(JSON.stringify(user));
// Output: {"id":444,"nama":"sigit"}
ini berguna saat mau mengirim data ke server lewat fetch atau AJAX:
fetch('https://api.contoh.com/user', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(user),
});
Membaca dan Menulis File JSON di PHP
Selain parsing JSON dari string, kalian juga bisa baca dan tulis file .json langsung. Ini sering dipakai untuk konfigurasi aplikasi atau menyimpan data sederhana.
Membaca file JSON
// baca seluruh isi file sebagai string
$jsonString = file_get_contents('config.json');
// parsing jadi array PHP
$config = json_decode($jsonString, true);
echo $config['app_name'];
Menulis data ke file JSON
$data = [
'nama' => 'sigit',
'email' => '[email protected]',
];
// konversi array ke string JSON
$jsonString = json_encode($data, JSON_PRETTY_PRINT);
// tulis ke file
file_put_contents('user.json', $jsonString);
hasilnya di user.json:
{
"nama": "sigit",
"email": "[email protected]"
}
Pretty print dengan JSON_PRETTY_PRINT
kalian perhatikan contoh di atas pakai flag JSON_PRETTY_PRINT. tanpa itu, JSON-nya jadi satu baris:
echo json_encode($data);
// Output: {"nama":"sigit","email":"[email protected]"}
echo json_encode($data, JSON_PRETTY_PRINT);
// Output:
// {
// "nama": "sigit",
// "email": "[email protected]"
// }
JSON_PRETTY_PRINT penting banget saat kalian mau debug atau biar file-nya mudah dibaca manusia.
Menangani JSON Bersarang (Nested)
JSON реально sering punya struktur bersarang. Misal data karyawan dengan array di dalamnya:
{
"perusahaan": "PT Contoh",
"karyawan": [
{
"id": 1,
"nama": "budi",
"posisi": "backend",
"skills": ["php", "mysql", "laravel"]
},
{
"id": 2,
"nama": "siti",
"posisi": "frontend",
"skills": ["vuejs", "css", "javascript"]
}
]
}
parsing dan akses data nested di PHP:
$jsonString = file_get_contents('perusahaan.json');
$data = json_decode($jsonString, true);
// akses data luar
echo $data['perusahaan']; // PT Contoh
// akses array karyawan
foreach ($data['karyawan'] as $karyawan) {
echo $karyawan['nama'] . ' - ';
echo implode(', ', $karyawan['skills']);
echo "\n";
}
output:
budi - php, mysql, laravel
siti - vuejs, css, javascript
Akses skill karyawan berdasarkan id
$idCari = 2;
foreach ($data['karyawan'] as $karyawan) {
if ($karyawan['id'] === $idCari) {
echo "Skill {$karyawan['nama']}: ";
echo implode(', ', $karyawan['skills']);
}
}
Error Handling JSON
Validasi JSON itu penting. Kalau string-nya invalid, json_decode return null dan kalian bisa dapat error.
$invalidJson = '{nama: "test"}'; // JSON invalid, key tanpa kutip
$result = json_decode($invalidJson);
if (json_last_error() !== JSON_ERROR_NONE) {
echo "JSON Error: " . json_last_error_msg();
// JSON Error: Control character error, possibly incorrectly encoded
}
Validasi sebelum decode
function isValidJson(string $string): bool {
json_decode($string);
return json_last_error() === JSON_ERROR_NONE;
}
$testString = '{"nama": "test"}';
if (isValidJson($testString)) {
$data = json_decode($testString, true);
// proses data...
} else {
echo "String bukan JSON yang valid";
}
Handle JSON dengan karakter khusus
JSON wajib di-encode sebagai UTF-8. Kalau ada karakter non-UTF8, pakai flag JSON_UNESCAPED_UNICODE:
$data = [
'nama' => '新年快乐', // karakter Mandarin
'pesan' => 'Selamat Tahun Baru! 🎉',
];
echo json_encode($data);
// Output: {"nama":"\u65b0\u5e74\u5feb\u4e50","pesan":"Selamat Tahun Baru! 🎉"}
echo json_encode($data, JSON_UNESCAPED_UNICODE);
// Output: {"nama":"新年快乐","pesan":"Selamat Tahun Baru! 🎉"}
Studi Kasus: Aplikasi Todo List Sederhana
Berikut contoh lengkap pakai JSON sebagai storage sederhana tanpa database:
Struktur file
project/
├── index.php
├── todos.json
todos.json (data awal)
[]
index.php
<?php
// baca data dari file JSON
$todos = [];
if (file_exists('todos.json')) {
$json = file_get_contents('todos.json');
$todos = json_decode($json, true) ?? [];
}
// proses tambah todo
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['todo'])) {
$todos[] = [
'id' => time(),
'text' => $_POST['todo'],
'done' => false,
];
file_put_contents('todos.json', json_encode($todos, JSON_PRETTY_PRINT));
}
// proses toggle done
if (isset($_GET['toggle'])) {
$id = (int) $_GET['toggle'];
foreach ($todos as &$todo) {
if ($todo['id'] === $id) {
$todo['done'] = !$todo['done'];
}
}
file_put_contents('todos.json', json_encode($todos, JSON_PRETTY_PRINT));
header('Location: index.php');
exit;
}
?>
<h1>Todo List</h1>
<form method="POST">
<input type="text" name="todo" placeholder="Todo baru..." required>
<button type="submit">Tambah</button>
</form>
<ul>
<?php foreach ($todos as $todo): ?>
<li style="text-decoration: <?= $todo['done'] ? 'line-through' : 'none' ?>">
<?= htmlspecialchars($todo['text']) ?>
<a href="?toggle=<?= $todo['id'] ?>">
[<?= $todo['done'] ? 'undo' : 'done' ?>]
</a>
</li>
<?php endforeach; ?>
</ul>
contoh ini menunjukkan cara pakai JSON sebagai storage sederhana. untuk production, pakai database ya , JSON file cocok cuma buat demo atau data yang sangat ringan.
Kesimpulan
- JSON dipakai untuk menampilkan data dari backend ke frontend lewat REST API
- parsing JSON di PHP pakai
json_decode, dan mengubahnya kembali pakaijson_encode - parsing JSON di JavaScript pakai
JSON.parse, dan mengubahnya kembali pakaiJSON.stringify - key JSON wajib diapit tanda kutip ganda
- baca/tulis file JSON pakai
file_get_contentsdanfile_put_contents - pakai
JSON_PRETTY_PRINTbiar output JSON mudah dibaca - selalu validasi JSON dengan
json_last_error()sebelum proses lebih lanjut - untuk data bersarang, akses pakai array notation seperti
$data['karyawan'][0]['skills']
sekian penjelasan dan implementasi JSON di PHP dan JavaScript, semoga paham cara ngolahnya.
Pertanyaan yang Sering Diajukan
Apa itu JSON?
JSON (JavaScript Object Notation) adalah format pertukaran data berbasis teks yang ringkas dan tidak bergantung pada bahasa. JSON dipakai hampir semua REST API untuk bertukar data antara frontend dan backend.
Bagaimana cara parsing JSON di PHP?
Pakai json_decode($json, true). Parameter kedua true membuat hasilnya array assoc PHP, kalau tanpa true hasilnya object stdClass.
Bagaimana cara parsing JSON di JavaScript?
Pakai JSON.parse($jsonString) untuk mengubah string JSON jadi objek JavaScript, dan JSON.stringify($obj) untuk kebalikannya, mengubah objek jadi string JSON.
Cara menampilkan data JSON berdasarkan id di PHP?
Setelah json_decode menjadi array, akses langsung key-nya, misal $user["id"]. Kalau hasilnya objek, pakai $user->id.

