Cara Encode JSON Object (Manual Parse)

Sebelumnya ada posting yang membahas JSON mengenai cara melakukan Encode & Decode, dan posting ini merupakan pelengkap dari posting sebelumnya.

Saya melakukan encode dengan melakukan json_encode($array, JSON_FORCE_OBJECT), penambahan parameter JSON_FORCE_OBJECT berfungsi agar array key tetap “utuh” dalam format JSON.

Namun, terjadi permasalahan ketika saya mencoba pada PHP versi dibawah 5.3, yaitu versi 5.2.6. Konstanta atau parameter JSON_FORCE_OBJECT tidak dikenal alias ERROR! Karena parameter tersebut tersedia hanya pada versi 5.3 keatas.

Pada saat itu bukanlah hal yang mungkin untuk melakukan upgrade PHP ke versi 5.3 keatas karena sistem operasi pada Server yang digunakan tidak memiliki repositori PHP versi 5.3 keatas, sehingga diperlukan upgrade sistem operasi terlebih dahulu untuk bisa melakukan update ke PHP versi 5.3.

Solusinya? Array di parsing secara manual kedalam bentuk object, seperti ini:

<?php

$json = json_encode((object)$array);

?>

Selesai 😉

Cara melakukan JSON Encode & Decode pada PHP

Pada ReST, seringkali kita menggunakan format JSON atau XML untuk melakukan representasi record pada database.

Pada saat menggunakan format JSON dalam PHP, saya memiliki kasus sebuah array yang memiliki key default, seperti ini:

<?php

$default = array('Spirit', 'Walk', 'Run', 'Jump');

?>

Array Key tersebut secara default tentu akan sama seperti ini:

<?php

$default = array(0 => 'Spirit', 1 => 'Walk', 2 => 'Run', 3 => 'Jump');

?>

Permasalahannya adalah ketika array tersebut di encode kedalam format JSON menggunakan function json_encode(), array key tersebut “hilang”, menjadi seperti ini:

["Spirit","Walk","Run","Jump"]

Salah satu solusinya agar array key tersebut bisa “dibawa” kedalam format JSON, array tersebut harus berbentuk object, dengan menambahkan konstanta JSON_FORCE_OBJECT sebagai parameter function json_encode(), menjadi:

<?php

$encode = json_encode($default, JSON_FORCE_OBJECT);

?>

Sehingga menghasilkan:

{"0":"Spirit","1":"Walk","2":"Run","3":"Jump"}

Dengan menjadikannya object, array key tersebut akan “dibawa” dalam format JSON. 😀

Lalu untuk melakukan proses decode format JSON object tersebut ke dalam bentuk array, gunakan paramater TRUE pada function json_decode(), seperti ini:

<?php

$decode = json_decode($encode, TRUE);

?>

Hasil decode ketika dilakukan var_dump(), kembali menjadi array, seperti ini:

array(4) {
  [0]=>
  string(6) "Spirit"
  [1]=>
  string(4) "Walk"
  [2]=>
  string(3) "Run"
  [3]=>
  string(4) "Jump"
}

Selamat mencoba! 😀