Algoritma JSON Beautifier menggunakan PHP
Sebagai seorang programmer, mungkin anda pernah membuat API sendiri untuk keperluan di website / mobile app anda. Biasanya sebuah API memiliki pilihan beberapa output, contoh nya : xml / json / javascript. Untuk output json sebagian besar para programmer tidak memperhatikan nilai essential kemudahan membaca output json itu sendiri. Jadi kebanyakan output json nya terdiri dari satu baris string, yang membuat si API implementor (maksudnya yang make API) agak susah membaca output json tersebut.
Alangkah baik nya jika output json dari API yang kita buat ditampilkan dalam format yang lebih elegan (prettify / beautify) dengan menggunakan algoritma untuk memformat sebuah string (nama keren nya beautifier). Karena sejauh yang saya tahu Facebook API dan Twitter API juga menerapkan cara ini.
Untuk menjelaskan lebih detail bagaimana cara membuat JSON beautifier dengan menggunakan PHP, anda pelajari dulu algoritma dibawah ini :
-- set inisial value : ---- json hasil = string kosong ---- flag tanda kutip = false (untuk pengecekan nanti apakah karakter koma berada dalam string atau separator variable di json) ---- level indentation = 0 -- baca original json sebagai string, kemudian di looping per karakter ---- reset value : ------ prefix = string kosong ------ suffix = string kosong ---- jika flag tanda kutip = true maka ------ jika karakter ke n adalah tanda kutip maka -------- jika flag tanda kutip = true, maka set flag tanda kutip = false, dan sebaliknya -------- jika flag tanda kutip = false, maka set flag tanda kutip = true ---- jika flag tanda kutip = false maka ------ cek jika karakter ke n adalah : -------- kutip dua -> " maka ---------- jika flag tanda kutip = true, maka set flag tanda kutip = false, dan sebaliknya ---------- jika flag tanda kutip = false, maka set flag tanda kutip = true -------- buka kurung kurawal -> { atau -------- buka kurung siku -> [ maka ---------- jika karakter ke n bukan karakter pertama ---------- dan karakter sebelum nya bukan tanda koma -> , ---------- dan karakter sebelum nya bukan buka kurung siku -> [ maka ------------ set prefix = baris baru + string indentation dikali sebanyak berapa level indentation ---------- increment level (level = level + 1) ---------- set suffix = baris baru + string indentation dikali sebanyak berapa level indentation -------- titik dua -> : maka ---------- set suffix = ' ' (1 spasi) -------- koma -> , maka ---------- jika flag tanda kutip = false maka ------------ set suffix = baris baru + string indentation dikali sebanyak berapa level indentation -------- tutup kurung kurawal -> } atau -------- tutup kurung siku -> ] maka ---------- decrement level (level = level - 1) ---------- set prefix = baris baru + string indentation dikali sebanyak berapa level indentation ------ set json hasil = prefix + karakter ke n + suffix -- setelah looping selesai, tampilkan json hasil
dari algoritma diatas, bisa dilihat kode PHP selengkap nya sebagai berikut :
<?php function prettyfy_json($original_json, $new_line= "\n", $indentation="\t") { $pretty_json = ''; $quote_flag = FALSE; $level = 0; $json_length = strlen($original_json); for ($i = 0; $i < $json_length; $i++) { $pre = ''; $suf = ''; if ($quote_flag) { if ($original_json[$i] == '"') $quote_flag = !$quote_flag; } else { switch ($original_json[$i]) { case '"': $quote_flag = !$quote_flag; break; case '{': case '[': if ($i > 0) { $previous_char = $original_json[$i - 1]; if ($previous_char != ',' && $previous_char != '[') { $pre = $new_line; $pre .= str_repeat($indentation, $level); } } $level++; $suf = $new_line; $suf .= str_repeat($indentation, $level); break; case ':': $suf = ' '; break; case ',': $suf = $new_line; $suf .= str_repeat($indentation, $level); break; case '}': case ']': $level--; $pre = $new_line; $pre .= str_repeat($indentation, $level); break; } } $pretty_json .= $pre.$original_json[$i].$suf; } return $pretty_json; }
Cara memakai nya bisa anda lihat pada contoh kode dibawah ini :
$json_string = {"name":"Robby Hartana","programmer":true,"shoe_size":42,"website":"http://robbyhartana.com","favorite_color":["blue","black"]}; $pretty_json = prettyfy_json($json_string, "\n", ' ');
Kode diatas akan menghasilkan output seperti ini :
{ "name": "Robby Hartana", "programmer": true, "shoe_size": 42, "website": "http:\/\/robbyhartana.com", "favorite_color": [ "blue", "black" ] }
Anda bisa mendownload full code PHP nya disini :
PHP JSON Beautifier
atau bisa mencoba langsung demo page nya disini :
Online JSON Beautifier
Setelah anda memahami algoritma dari JSON Beautifier diatas, anda
bisa membuatnya dengan menggunakan bahasa pemrograman apapun. Beri tahu
saya jika anda menemukan bugs di algoritma diatas. Terima kasih :-)
0 Comments:
No comments