JSON Decode
// Aralık 25th, 2009 // php

JSON (JavaScript Object Notation) hafif bir veri transfer teknolojisidir. Önceleri XML ile veri transferi yapardık sayfalarımız arasında. . JSON, XML den daha hafif olduğu için hız açısından ve server tarafında ayıklama (parse) açısından daha basit ve hızlı olduğundan tercih sebebi olmaktadır. JSON bir veri transfer biçimidir ve veri transferi gerektiren bütün programlama dillerinde yerini almıştır (veya yazılımcı tarafından JSON dizisini ayrıştıracak/katıştıracak fonksiyonlar kolayca yazılabilir).
{
"dizi":[
{
"anahtar1a":"değer1a",
"anahtar2a":"değer2a"
},
{
"anahtar1b":"değer1v",
"anahtar2b":"değer2v"
},
{
"anahtar1c":"değer1c",
"anahtar2c":"değer2c"
}
]
}
Basit bir JSON formatı yukarıdaki gibidir. Fakat JSON dizileri her zaman bu şekilde basit olmayabilir.
Karşılaştığım sorunla
rdan biri de hali hazırda var olan bir JSON dizisini server taraflı bir dil olan PHP tarafında parse edilmesi aslında edilememesi diyebilirim.
PHP4 ten sonra PHP'ye entegre olarak json_decode ve json_encode fonksiyonları gelmektedir.
JSON parse işlemi için json_decode fonksiyonunu kullanarak JSON dizisini sunucu taraflı diziler haline çevirebiliriz.
Karşılaştığım sorunlardan biri ise bu fonksiyonun karmaşık JSON dizilerini parse edememesiydi.
Bir kaç araştırma sonucu (yanılmıyorsam http://www.phpclasses.org/) bir sitede rastladığım bir fonksiyonu buraya eklemek istedim.
function myjson_decode($json){
$comment = false;
$out = '$x=';
for($i=0; $i<strlen($json); $i++){
if(!$comment){
if ($json[$i] == '{') $out .= ' array(';
else if ($json[$i] == '}') $out .= ')';
else if ($json[$i] == ':') $out .= '=>';
else $out .= $json[$i];
}
else $out .= $json[$i];
if ($json[$i] == '"') $comment = !$comment;
}
eval($out . ';');
return $x;
}
Karşılaştığım parse sorunlarında bu fonksiyonu kullanarak JSON dizisini decode etme işlemini sorunsuz çözmüştüm.
Sonuç olarak PHP nin entegre fonksiyonları size doğru cevaplar vermezse yine alternatif fonksiyonlar ile işinizi görebilirsiniz.
JSON candır . .



