28 Ağustos 2010 Cumartesi

PHP ve JSON

PHP ve JSON kullanarak XML alternatif olarak platformlar arası iletişimi sağlayabilir, birçok ücretsiz servisi API ile kullanabilirsiniz. En gözde servisler arasında gelen Twitter, FriendFeed, Flickr, vb. denemediyseniz güzel birer örnek olacaktır.


JSON Nedir?


JSON, JavaScript Obje Notasyonu kelimelerinin kısaltmasıdır. XML gibi dillere alternatif olarak ortaya çıkmıştır ve direkt JavaScript içerisinde kullanılabilmek gibi güzel özellikleri mevcuttur. PHP, JavaScript, Java, Perl, Python, C, C++ vb. birçok dille entegre çalışabilmesi için gerekli hazır fonksiyon, kütüphane mevcuttur ve bu diller arası veri alışverişi için kullanılır. Okunurluğu daha kolay ve benzerlerine göre boyutu da ~%15 daha azdır.

JSON Kullanımı


{
"diller": {
"asp":"Active Server Pages",
"jsp":"Javascript Server Pages",
"php": {
"aciklama":"Personal Home Page",
"fonksiyonlar":[
{
"fonksiyonAdi":"json_decode",
"ozelligi":"Json Çözümleme Fonksiyonu",
"kullanimi":"json_decode(json,oznitelik)"
},
{
"fonksiyonAdi":"json_encode",
"ozelligi":"Json Çeviri Fonksiyonu",
"kullanimi":"json_encode(dize,secenekler)"
},
{
"fonksiyonAdi":"json_last_error",
"ozelligi":"Json Hata Çözümleme Fonksiyonu",
"kullanimi":"json_last_error()"
}
]
}
}
}

PHP ile JSON işlemleri


Yukarıda da bahsettiğimiz gibi PHP'nin de JSON işlemek için kullanılabilecek 3 farklı fonksiyon mevcuttur. Bunlarla JSON metnini çözümleyebilir, dizileri JSON'a çevirebilir ve JSON işlemlerinde hata çözümlemeleri yapabilirsiniz.

Örneklerle fonksiyonları açıklamaya geçelim;
<?php

$JSON = '

{
"diller": {
"asp":"Active Server Pages",
"jsp":"Javascript Server Pages",
"php":"Personal Home Page"
}
}

';

//obje olarak kullanım için
$obje = json_decode($JSON);

//standart dizi (array) kullanımı..
$dizi = json_decode($JSON, true);

//diziyi ekrana basalım..
var_dump($obje);
var_dump($dizi);

?>

Çıktısı;
object(stdClass)#1 (1) {
["diller"]=>
object(stdClass)#2 (3) {
["asp"]=>
string(19) "Active Server Pages"
["jsp"]=>
string(23) "Javascript Server Pages"
["php"]=>
string(18) "Personal Home Page"
}
}
array(1) {
["diller"]=>
array(3) {
["asp"]=>
string(19) "Active Server Pages"
["jsp"]=>
string(23) "Javascript Server Pages"
["php"]=>
string(18) "Personal Home Page"
}
}

JSON çözümlemeleri yukarı da örneklediğimiz şekilde yapılır. Çözümlemenin tersi olarak php ile JSON çıktılar üretmekte mümkündür. Bunun için de örnekleme yaparak inceleyelim;
<?php

$dizi = array(
'diller'=> array(
'asp'=>'Active Server Pages',
'jsp'=>'Java Server Pages',
'php'=>'Personal Home Page'
)
);

//diziyi JSON'a çevirelim..
echo json_encode($dizi);

?>

Çıktısı;
{"diller":{"asp":"Active Server Pages","jsp":"Java Server Pages","php":"Personal Home Page"}}

Bu örnekten fonksiyonun anlaşıldığını varsayıyorum, dizi (array) kullanımı ile ilgili gerekli bilgiye sahip olduğunuzu varsaymak zorundayım yoksa bu makale içinden çıkılmaz uzunlukta bir makaleye dönebilir (:

Ve son olarak json işlemleri (decode/encode) sırasında aldığımız hataların ayıklanması için json_last_error() kullanımını örnekleyelim, örnek için php.net'te bulunan güzel bir kullanım mevcut, aynen kullanıyorum örneği;
<?php
// Geçerli json dizgesi
$json[] = '{"php": "Personal Home Page"}';

// Geçersiz json dizgesi sözdizimi hatasına sebep
// olur, bu durumda biz tırnak için ' yerine "
// kullanırız
$json[] = "{'php': 'Personal Home Page'}";

foreach($json as $string)
{
echo 'Çözümlenen: ' . $string;
json_decode($string);

switch(json_last_error())
{
case JSON_ERROR_DEPTH:
echo ' - Azami yığın derinliği aşıldı';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Beklenmeyen kontol karakteri bulundu';
break;
case JSON_ERROR_SYNTAX:
echo ' - Sözdizimi hatası, kusurlu JSON';
break;
case JSON_ERROR_NONE:
echo ' - Hatasız';
break;
}

// \n işlemi yapar ve satırı alta alır..
echo PHP_EOL;
}
?>

Php ile JSON işlemleri buraya kadar. JSON yazılımında dikkat edilmesi gereken en önemli özellik her nesnenin " (çift tırnak) ile ayrılıyor olmasıdır. Data olmadığında null ve sayılarda tırnaksız kullanım yapılabilir..

SONUÇ: PHP ve yeni gözdemiz JSON ile tam uyumlu çalışabilir, diğer platform / diller ile iletişimi daha esnek ve daha az boyutlu olarak yapabilirsiniz.

jQuery ve JSON için eBurhan'ın güzel makalesini inceleyebilirsiniz.

Kaynaklar:

Hatalarımız için şimdiden özür dileriz, yeni makale isteklerinizi lütfen iletiniz..

0 yorum:

Yorum Gönderme