waktu tersisa untuk klaim promo DISKON 40%. Klaim Promo

Perbedaan Json dengan Serialize

Ditanyakan 3 bulan yang lalu oleh Achmad Kamil

[Ask]

Dear all,

Need help, bagaimana penjelasan secara spesifik mengenai penggunaan Serialize dengan Json?

Sample Code:
$todos = [];
if(file_exists("todo.txt")) {
    $file = file_get_contents("todo.txt");
    $todos = json_decode($file);
}

if(isset($_POST["todo"])) {
    $data = $_POST["todo"];
    $todos[] = [
        "todo" => $data,
        "status" => 0
    ];
    file_put_contents("todo.txt", json_encode($todos));
}

?>

<h1>To Do Apps</h1>
<form action="" method="POST" accept-charset="utf-8">
    <label>Kegiatan Hari Ini</label><br>
    <input type="text" name="todo">
    <button type="submit">Simpan</button>
</form>

<ul>
    <?php foreach ($todos as $key => $value): ?>
    <li>
        <input type="checkbox" name="todo">
        <label><?php echo $value["todo"]; ?></label>
        <a href="#">Hapus</a>
    </li>
    <?php endforeach; ?>
</ul>

Output: Fatal error: Uncaught Error: Cannot use object of type stdClass as array in C:\xampp\htdocs\codepolitan\filemanager\index.php:51 Stack trace: #0 {main} thrown in C:\xampp\htdocs\codepolitan\filemanager\index.php on line 51

1 JAWABAN / 0 KOMENTAR

Generic placeholder image
Ahmad Oriza Sahputra menjawab 3 bulan yang lalu

Hai,

Kedua format tersebut sering digunakan untuk menyimpan kumpulan data. Tapi perbedaaannya memang mencolok sekali.

JSON

Merupakan kependekan dari Javascript Object Notation. Biasanya digunakan untuk menyimpan data setting, pertukaran data seperti API, atau memadatkan informasi dalam sebuah field database. Format ini merupakan format global, semua bahasa pemrograman biasanya support format JSON. Secara raw, format ini lebih mudah dibaca / dimengerti dibanding format PHP Serialize.

Serialize

Merupakan sebuah format hasil bentukan bahasa PHP. Fitur ini biasanya ditujukan untuk menyimpan / memadatkan kumpulan data menjadi sebuah encoded format. Hasil bentukannya bisa disimpan dalam sebuah file, ataupun field database. Format ini hanya ada di lingkungan PHP.

Saya lihat mas ingin bereksperimen dengan kedua format ini pada materi belajar. Error yang terjadi pada kode program mas cuma kurang pada bagian json_decode saja. Fungsi json_decode akan menghasilkan output dengan tipe data stdClass, sedangkan mas memanggil data foreach menggunakan array, maka terjadi error. Solusinya tinggal menambah parameter sedikit pada bagian json_decode agar mengeluarkan format array. Kodenya seperti ini :

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// Total array yang disiapkan untuk disimpan
$todos  = []; 

// Melakukan pengecekan apakah file todo.txt ditemukan
if (file_exists('todo.txt'))
{
    // Membaca file todo.txt
    $file = file_get_contents('todo.txt');

    // Mengubah format serialize menjadi array
    $todos = json_decode($file, true); // Kasih parameter true agar mengeluarkan array dibanding stdClass
}

// Jika ditemukan todo yang dikirim melalui methode POST
if(isset($_POST['todo']))
{
    $data = $_POST['todo']; // Data yang dipilih pada form

    $todos[] = [
        'todo'  => $data,
        'status' => 0
    ];

    $daftar_belanja = json_encode($todos);

    file_put_contents('todo.txt', $daftar_belanja);
}
?>

<h1>Todo App</h1>

<form action="" method="POST">
    <label>Daftar Belanja Hari ini<label><br>
    <input type="text" name="todo">
    <button type="submit">Simpan</button>
</form>

<ul>
    <?php foreach($todos as $key=>$value): ?>
    <li>
        <input type="checkbox" name="todo">
        <label><?php echo $value['todo'];?></label>
        <a href='#'>hapus</a>
    </li>
    <?php endforeach; ?>
</ul>