Home » JSON » Memahami JSON Pada PHP Show
Hi, sobat JWD, kali ini kita akan membahas JSON pada PHP. Sebelumnya, pada artikel Panduan Lengkap Memahami JSON kita sudah membahas secara umum apa itu JSON, nah pada artikel ini, kita akan membahas implementasi JSON pada PHP. PHP sendiri sudah mengakomodir JSON sejak PHP versi 5.2 dan terus disempurnakan pada PHP versi berikutnya. Berikut ini contoh implementasi JSON pada PHP dan Javascript. LIVE DEMO Environment Sebelum melangkah lebih jauh, perlu sobat ketahui, bahwa ketika menulis artikel ini, saya menggunakan PHP versi 5.6 yang berjalan di Windows 10. Dengan demikian, jika sobat menggunakan versi yang berbeda, bisa jadi hasil yang sobat dapatkan berbeda dengan yang ada di artikel ini. I. Membuat JSON Pada PHPUntuk membuat JSON di PHP maupun bahasa pemrograman lain, tidak disarankan untuk membuatnya secara manual, kenapa? karena berisiko terjadi error, sebaliknya, selalu gunakan fungsi bawaan (built-in) dalam hal ini fungsi 3Kenapa demikian? karena setiap fungsi bawaan, termasuk PHP akan memperhatikan standar yang ada, sehingga JSON yang dihasilkan bisa dipastikan valid dan memenuhi standar yang ada (ECMA-404) Contoh penggunaan fungsi 3 sebagai berikut:
I.1. $conn = mysqli_connect('localhost', 'root', '', 'test'); $query = mysqli_query($conn, 'SELECT * FROM config'); while ($row = mysqli_fetch_assoc($query)) { $json[] = $row['value']; } echo '<pre>'; print_r($json); echo '</pre>'; $json = json_encode($json); echo $json;3 – Format PenulisanSecara umum format penulisan fungsi 3 adalah sebagai berikut:
Argumen:
Karena umumnya yang digunakan adalah array, maka agar pembahasan tidak terlalu panjang, pada bagian ini kita hanya akan membahas penggunaan fungsi 3 pada array.I.2.  $conn = mysqli_connect('localhost', 'root', '', 'test'); $query = mysqli_query($conn, 'SELECT * FROM config'); while ($row = mysqli_fetch_assoc($query)) { $json[] = $row['value']; } echo '<pre>'; print_r($json); echo '</pre>'; $json = json_encode($json); echo $json;3 – Dasar PenggunaanFungsi 3 dapat digunakan baik untuk indexed array, maupun associative array, maupun gabungan keduanya, sebagai contoh kita memiliki tabel di database dengan nama config dengan data sebagai berikut:idoptionvalue1site_titleJagowebdev2site_descriptionKomunitas Jagowebdev (JWD) akan membantu anda menjadi “Jago” dibidang Web Development3site_urlhttps://jagowebdev.com4pathuser\htdocs\jwd5themesjwd Contoh 1: indexed array
Hasilnya adalah:
Contoh 2: Associative array:
Hasil yang kita peroleh adalah:
Jika array berbentuk indexed array, maka JSON yang dihasilkan juga berbentuk array, misal:
Jika kita ingin membuatnya menjadi objek maka kita dapat menggunakan opsi 4, misal:
Lebih lanjut tentang array dan objek pada JSON, dapat membaca kembali artikel sebelumnya: Panduan Lengkap Memahami JSON Error Ketika Membuat JSON dari Data DatabaseJSON sering digunakan untuk menampilkan data dari database, seperti contoh pada bagian sebelumnya. Nah, terkait data pada database, datanya bisa beragam, tergantung darimana data tersebut berasal (sebelum masuk ke database) dan bisa jadi tidak diencode menggunakan UTF-8 sehingga mengakibatkan error:
Pembahasan lebih jauh tentang masalah ini dapat dibaca pada artikel: JSON Error Pada PHP – Membuat JSON Dari Database Pentingnya escape slash (\/)Secara default, Mulai PHP versi 5.4.0, fungsi 3 otomatis akan meng-escape setiap karakter slash, yaitu dari / menjadi \/Dengan model seperti itu, untuk url, kita akan mendapati bentuk yang agak aneh, misal: https://jagowebdev.com/images/article/json_logo.png menjadi https://jagowebdev.com\/images\/article\/json_logo.png Di standar JSON, escape ini sifatnya optional, tidak wajib, jika kita tidak menginginkannya, kita dapat menambahkan argumen 6.Lantas, apa manfaat escape ini? Tujuan utamanya adalah mengantisipasi jika didalam string json terdapat closing tag 7, sehingga jika json tersebut diletakkan didalam tag 8 akan menyebabkan script utama berhenti dan dieksekusinya code javascript yang ada didalam JSON tersebut, misal:
Pada contoh diatas, kode javascript yang ada didalam tag 8 yang ada pada data JSON akan dieksekusi, hal ini akan berbahaya dan berpotensi timbul serangan XSS.Untuk itu sebaiknya biarkan karakter slash di-escape, atau kita dapat meng-escape tersebut jika benar benar tahu data JSON yang kita olah. I.3 $conn = mysqli_connect('localhost', 'root', '', 'test'); $query = mysqli_query($conn, 'SELECT * FROM config'); while ($row = mysqli_fetch_assoc($query)) { $json['site_option'][ $row['option'] ] = $row['value']; } $json['site_db'] = array( 'host' => 'localhost' , 'user' => 'root' , 'pass' => 'defult' ); echo '<pre>'; print_r($json); echo '</pre>'; $json = json_encode($json); echo $json;0 Argumen KeduaFungsi 3 menyediakan argumen kedua berupa opsi untuk mengubah parameter default, nilai opsi ini berupa bitmask dengan nilai 1, 2, 4, 8, 16, dst, agar lebih mudah, PHP telah menyediakan constant yang mewakili nilai tersebut, diantaranya:
List constant diatas adalah yang paling sering digunakan, jika Sobat penasaran ingin tahu semua daftar constant yang ada, sobat dapat mengunjungi: PHP: Predefined Constant Jika ingin menggunakan opsi lebih dari satu, gunakan bitwise OR ( | ), misal: 3II. Parsing JSON di PHPSetelah sebelumnya telah kita bahas bagaimana cara membuat JSON di PHP, pada bagian ini, kita bahas bagaimana mengubah JSON tersebut menjadi array maupun object. Untuk mengubah JSON menjadi array atau object di PHP, kita gunakan fungsi 9, fungsi ini memiliki format penulisan sebagai berikut: 4Jika argumen kedua dari fungsi ini, yaitu 0 bernilai 1, maka output yang dihasilkan adalah array, jika tidak, maka yang dihasilkan adalah objek, misal kita memiliki data JSON sebagai berikut: 5Contoh 1: Hasil berupa objek: 6Contoh 2: Hasil berupa array: 7Pilih Objek atau Array? hal ini tergantung dari situasi yang ada, umumnya bentuk yang sering digunakan adalah array. CATATAN: JSON bisa berasal dari berbagai sumber: baik dari database, file fisik (.txt, .json, dll), maupun dari url eksternal. Agar pembahasan tidak terlalu panjang, pembahasan mengenai topik ini dibahas pada artikel: JSON Pada Javascript III. Handling Error Pada JSONKetika membuat dan memparsing data JSON baik dengan fungsi 3 maupun 9, maka ketika terjadi error, keduanya tidak memunculkan pesan error apapun. Fungsi 3 hanya menghasilkan nilai kosong, sedangkan pada fungsi 9 akan menghasilkan nilai 6Nah untuk mengetahui error yang terjadi, terdapat dua cara yang dapat kita lakukan yaitu menggunakan fungsi:
Cara paling mudah untuk mengetahui error yang terjadi adalah dengan menggunakan fungsi 0 karena yang dimunculkan langsung pesan errornya bukan kode , contoh: 8NOTE: Terkait contoh diatas, jika tidak terjadi error, maka fungsi 0 akan menghasilkan string “No error”Agar lebih fleksibel dan pesan error lebih terorganisir, kita dapat menggunakan fungsi json_last_error() fungsi ini akan menghasilkan nilai integer mulai dari 0 s.d 10 Nilai integer ini telah diterjemahkan ke bentuk constant sebagai berikut: Kode Error Pada JSONConstantIntegerArtiVersi PHP 50No error has occurred 61The maximum stack depth has been exceeded 72Invalid or malformed JSON 83Control character error, possibly incorrectly encoded 94Syntax error 05Malformed UTF-8 characters, possibly incorrectly encodedPHP 5.3.3 16One or more recursive references in the value to be encodedPHP 5.5.0 27One or more 3or 4values in the value to be encodedPHP 5.5.0 58A value of a type that cannot be encoded was givenPHP 5.5.0 69A property name that cannot be encoded was givenPHP 7.0.0 710Malformed UTF-16 characters, possibly incorrectly encodedPHP 7.0.0Sehingga jika kita mencetak konstanta tersebut, kita akan mendapatkan nilai integer nya, misal: jika kita jalankan 8 maka kita akan mendapatkan nilai 4Dengan model seperti diatas, kita dapat mendefinisikan sendiri pesan error, misal: 9atau 0Untuk menghandle semua pesan error, kita dapat membuat sebuah array dengan format sebagai berikut: 1IV. JSON dan XSSSetiap string yang berhubungan dengan javascript dan HTML maka akan tidak lepas dari pembahasan tentang XSS, demikian juga JSON. XSS ini terjadi salah satunya ketika script HTML terdapat element 8 yang berasal dari sumber tidak terpercaya (seperti form input dimana pengunjung bebas memasukkan data).Element script tersebut tersebut mengandung kode javascript yang akan mengekpose data pribadi user kemudian mengirim data tersebut ke pembuat script. Terkait dengan JSON, pembuatan JSON dengan fungsi 3 sudah aman, karena (seperti telah disampaikan sebelumnya) fungsi tersebut sudah meng-escape slash ( <\/script> ) – mulai PHP versi 5.4.0 -, sehingga membuat kode javascript di dalam JSON tidak berjalan.Terlebih lagi, perlindungan terhadap XSS sebenarnya tidak dari sisi JSON nya melainkan pada sisi inputan user, dimana ketika ada inputan dari luar yang akan langsung dieksekusi atau disimpan ke database, data inputan tersebut harus di sanitasi terlebih dahulu, misal menggunakan fungsi 1 sehingga misal ketika dibuat menjadi JSON atau format lain, data tersebut sudah aman.Apakah perlu HEX?Pembahasan yang sering muncul adalah, jika json kita mengandung tag HTML, atau tag 8, perlukah kita menggunakaan opsi JSON_HEX_XXX untuk mengubah elemen HTML menjadi hex? seperti berikut ini: 2Sekali lagi bahwa fungsi 0 ini sudah aman sehingga penggunaan argumen JSON_HEX_xxx tidak diperlukan lagi terlebih jika sumber data sudah terpercaya, misal dari server kita sendiri dan kita sendiri yang membuat data tersebut.V. PenutupPHP menyediakan tools bawaan yang komplet untuk bekerja dengan JSON, hal yang perlu diperhatikan adalah versi PHP yang kita gunakan, karena pada PHP versi sebelum 5.6, terdapat beberapa bug yang merepotkan. Demikian pembahasan mengenai JSON Pada PHP semoga bermanfaat. Happy encoding!!!. Subscibe NowSuka dengan artikel di Jagowebdev.com? jangan sampai ketinggalan, segera join ke milis kami untuk update informasi terbaru dari Jagowebdev.com Komitmen Kami: Kami senantiasa menghargai privasi Anda dan tidak akan membagikan identitas Anda ke pihak manapun. JSON digunakan untuk apa?JSON (JavaScript Object Notation) adalah format file berbasis teks yang umumnya digunakan dalam proses pertukaran data antara server dan klien. File JSON memiliki ekstensi .json serta menggunakan teks yang sama-sama bisa dibaca oleh manusia dan dipahami oleh komputer.
Apa itu XML dan JSON?XML adalah meta-language seperti tag HTML yang digunakan untuk mendiskripsikan data-data. sedangkan JSON adalah format pertukaran data yang ringan, mudah dibaca dan ditulis oleh manusia, dan serta mudah diterjemahkan dan dibuat oleh komputer. Penelitian ini menerapkan XML dan JSON untuk pembayaran uang kuliah.
Apa singkatan dari JSON?JSON (dilafalkan "Jason"), singkatan dari JavaScript Object Notation (bahasa Indonesia: notasi objek JavaScript), adalah suatu format ringkas pertukaran data komputer. Formatnya berbasis teks dan terbaca-manusia serta digunakan untuk merepresentasikan struktur data sederhana dan larik asosiatif (disebut objek).
Apa itu JSON API?Javascript Object Notation (JSON) adalah sebuah format standar yang menggunakan tulisan yang dapat dibaca oleh manusia untuk pertukaran data, yang di dalamnya berisi pasangan antara key dan value.
|