Skip navigation


JSON atau Javascript Object Notation adalah sebuah format pertukaran data yang ringan dan mudah ditulis atau dibaca oleh manusia. Karena ringan, format ini sering dipakai dalam pertukaran data. Contoh format data JSON.

{
    "glossary": {
        "title": "example glossary",
		"GlossDiv": {
            "title": "S",
			"GlossList": {
                "GlossEntry": {
                    "ID": "SGML",
					"SortAs": "SGML",
					"GlossTerm": "Standard Generalized Markup Language",
					"Acronym": "SGML",
					"Abbrev": "ISO 8879:1986",
					"GlossDef": {
                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
						"GlossSeeAlso": ["GML", "XML"]
                    },
					"GlossSee": "markup"
                }
            }
        }
    }
}

Kadang-kadang untuk menghemat data maka seluruh whitespace dihilangkan dari format data. Penghematan ini jelas membuat format data menjadi susah terbaca oleh manusia.

{"glossary":{"title":"example glossary","GlossDiv":{"title":"S","GlossList":{"GlossEntry":{"ID":"SGML","SortAs":"SGML","GlossTerm":"Standard Generalized Markup Language","Acronym":"SGML","Abbrev":"ISO 8879:1986","GlossDef":{"para":"A meta-markup language, used to create markup languages such as DocBook.","GlossSeeAlso":["GML","XML"]},"GlossSee":"markup"}}}}}

Code beautifier adalah salah satu perkakas untuk membuat kode menjadi terbaca. Salah satu caranya adalah dengan indenting yakni menambahkan whitespace pada kode. Dengan perkakas ini, kode kedua dapat kembali mejadi yang pertama.

Untuk kode JSON sebenarnya sudah ada yang online seperti ini. Tapi sepertinya kodenya tidak dibuka jadinya gw mencari-cari dan dapat di sini. Berikut adalah fungsi yang dapat mengubah kode JSON yang minim itu menjadi mudah dibaca oleh manusia.

function indent($json)
{
$tab = ‘ ‘;
$new_json = ”;
$indent_level = 0;
$in_string = false;
$json_obj = json_decode($json);

if(!$json_obj)
{
return “Error parsing”;
}

$json = json_encode($json_obj);
$len = strlen($json);

for($c = 0; $c < $len; $c++) { $char = $json[$c]; switch($char) { case '{': case '[': if(!$in_string) { $new_json .= $char . "\n" . str_repeat($tab, $indent_level + 1); $indent_level++; } else { $new_json .= $char; } break; case '}': case ']': if(!$in_string) { $indent_level--; $new_json .= "\n" . str_repeat($tab, $indent_level) . $char; } else { $new_json .= $char; } break; case ',': if(!$in_string) { $new_json .= ",\n" . str_repeat($tab, $indent_level); } else { $new_json .= $char; } break; case ':': if(!$in_string) { $new_json .= ': '; } else { $new_json .= $char; } break; case '"': $in_string = !$in_string; default: $new_json .= $char; break; } } return $new_json; } [/sourcecode] Fungsi ini berusaha melakukan parsing karakter "[", "{", "}", "]" secara rekursif dan memberikan whitespace.

Demonstrasi dapat dilihat di sini. Untuk mengubah sebuah kode JSON menjadi human-readable, kode cukup ditaruh di textarea kemudian klik submit.

Kode penuh dapat didownload di sini. (as usual, rename to zip)

5 Comments

  1. posting yang bagus sy Agus Suhanto, nyampe di blog ini dr mbah google. Salam kenal ya… 🙂

  2. emang lebih mudah di baca daripada array atau xml, tapi keknya yaml lebih mudah lagi oom🙂

  3. yaml belum langsung ada di library PHP kalo gak salah😛

  4. yup.. fungsi bawaan nya emang blom ada, tapi dulu juga gak ada json_encode/decode, yg ada cuman encode+decode dari json.org nya itu🙂, btw nice tutor ^^

  5. ho oh, dulu emang gak ada😛
    thx anyway


Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: