JSON ve PHP

Php & JSON Mustafa Ahmet KARA

Merhaba arkadaşlar, JSON serilerine devam ediyorum. JSON'un PHP, ASP, ActionScript, C++, C#, Java dillerinde kullanım örneklerini varolan kütüphanelerin farklılıklarından bahsedeceğim. Yazının başlığından anlayacağınız üzere kullanım örneklerinden ilk olarak PHP ile kullanımından bahsedeceğim.

JSON bildiğiniz gibi bir veri değiştirme formatıdır. JSON hakkında daha ayrıntılı bilgi almak için tıklayabilirsiniz.
PHP üzerinde isimlerini duymuş olduğum ve test edebildiğim 6 adet kütüphane var. Ve değerli yorumlarını eksik etmeyen Hamza ve Erhan arkadaşımızın bahis konusu ettiği gibi PHP 5.2.0 sürümünden itibaren PHP içinde standart fonksiyonlar olarak desteklenmekte. Standart olarak dil desteği olduğu için bu örneklerde o fonksiyonları inceleyecek ve 5.2.0 öncesi kullanıcılar için diğer kütüphaneleri kısaca tanıyacağız.

Fonksiyonlar

json_decode ( string $json [, bool $assoc] )

JSON ifadesinden PHP nesnesi veya dizisi oluşturur.

$json parametresi dönüştürülecek JSON ifadesidir
$assoc true olarak belirtilirse sonucu nesne değil, dizi olarak geri döndürür.

PHP:
  1. <?php
  2. $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
  3.  
  4. var_dump(json_decode($json));
  5. var_dump(json_decode($json, true));
  6.  
  7. ?>

Dump sonuçları ise aşağıdaki çıktıyı oluşturur:

object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}

array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}

string json_encode (mixed $value)
Dosya işaretçileri gibi dış kaynak referans işaretçileri dışında herhangi bir PHP değişkenin JSON ifadesini oluşturur.

$value JSON ifadesi oluşturulacak değişkendir.

PHP:
  1. <?php
  2. $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
  3.  
  4. echo json_encode($arr);
  5. ?>

Bu kodun çıktısı ise

{"a":1,"b":2,"c":3,"d":4,"e":5}

Bu kısma kadar belirttiklerimin tamamına PHP kılavuzundan da ulaşabilirsiniz.

Diğer sayfalarda bir kaç örnek yapacağız ve diğer kütüphanelerin karşılaştırması olacaktır.

Sayfalar: 1 2 3

Toplamda 14121 kez okunmuş.
Şu an 1 kişi okuyor.
En fazla 7 kişi aynı anda okumuş.
Bugün 20 kez okunmuş.

Etiketler:

1 oy2 oy3 oy4 oy5 oy (18 oy, ortalama 4.44) Oylanıyor ... Oylanıyor ...

  1.  

Trackback Yorumları takip et Baskı Önizleme

22 yorum var

  1. # Hamza Saglam | 31 Ağustos 2007, 00:02 Gravatar

    Onceki makaledeki sabirsiz yorumum icin ozur dilerim :)

  2. # Mustafa Kara | 31 Ağustos 2007, 00:33 Gravatar

    Hamza gerçekten özür dilemene hiç gerek yok aslında çok yardımcı oldun. JSON’un bir çok dilde kullanımı hakkında yazılar hazırlama düşüncem vardı ama hangisi olacağı konusunda karar verememiştim. PHP ilk oldu sonuçta, senin sayende. Asıl ben teşekkür ederim, hangi dil sorusuna cevap verdiğin için.

  3. # solskajer | 31 Ağustos 2007, 14:27 Gravatar

    vallahi ne söliiim mükemmel bir anlatım olmuş bilgine ve emeğine sağlık bir haftadır araştırıyorum bu JSON olayını böyle bir anlatım bulamadım.

    çok teşekkürler kolay gelsin…

  4. # illumunati | 01 Eylül 2007, 00:09 Gravatar

    abi kusra kalmayın biraz acemiyim bu jsonları nerede kullanabiliriz yani açıklarsanız sevinirim..

  5. # Mustafa Kara | 01 Eylül 2007, 16:51 Gravatar

    AJAX ile sunucudan veri almak istediğin heryerde JSON kullanabilirsin.

    http://ajax-tr.com/ajax-ne-gibi-durumlarda-kullanilmali/ yazısına bakar isen AJAX’î hangi durumlarda kullanabileceğin ayrıntılı anlatılmış durumda. Sunucudan veri aktarımında ise JSON u kullanabilirsin.

    Örnek vermek gerekirse şehir listesini AJAX ile arka planda yüklemek istiyorsun, bu durumda sunucudan veriyi JSON formatında gönderebilirsin.

    Dinamik form yapmak istiyorsun, form alanları sunucudan JSON formatında gelebilir.

    Form post yapacaksın, JSON formatında yapabilirsin.

    Tabii tüm bunları XML, HTML ile de yapabilirsin. JSON sadece veri aktarımında ve dönüştürülmesinde kolaylıklar ve veri boyutlarında azalmaya neden olan bir format. Diğerlerine göre daha yeni olduğu için ve tam standartları oturmadığı için bazı problemleride mevcut, bunlardan JSON yazısının sonunda zaten bahsedeceğim.

    Umarım yardımcı olabilirmişim.

  6. # illumunati | 02 Eylül 2007, 15:35 Gravatar

    saol hocam.”şehir listesini AJAX ile arka planda yüklemek istiyorsun, bu durumda sunucudan veriyi JSON formatında gönderebilirsin.” bu acıklama benim için yeterli oldu. abi okuyup öğreneceğiz inş. saolasın hemen başlıyorum . Paylaşım için ve dha önemlisi exstara açıklama için(benim gibi acemilere) teşekkürler. sağlıacakla kal.

  7. # Strefrextor | 21 Eylül 2007, 11:16 Gravatar

    ilk oalrak herkese merhabalar . Ben şu ajax işinde türkçe karater hatasını bir türlü düzeltemedim :( . Çalışmalarımda her ajax da hep gelen veriler türkçe karakterler soru işaretli olarak çıkıyor . Yardımcı olursanız çok sevinirim . Ayrıca projeleriniz geçekten çok harika . başarılarınzın devamını dilerim. Umarım devamı gelir :)

  8. # mustafa_kara | 21 Eylül 2007, 21:22 Gravatar

    Merhabalar,

    Türkçe problemini aşmak için sunucudan gönderdiğin verinin unicode olarak geldiğine dikkat etmen yeterli ama eğer elinde olmayan sebeplerle unicode olarak gönderemiyorsan ki başıma gelmişti bir kere sunucudan ç için |c|, İ için |I| gönderiyordum ve istemci tarafında aşağıdaki gibi bir kod çalıştırıyordum

    var resposeText = xmlHttp.responseText;
    if (responseText) responseText = responseText.replace(/|c|/g,”ç”).replace(/|I|/g,”İ”);

    Bu şekilde bu sorunu aşmıştım ama unicode olarak göndermek en iyisi tabiiki.

  9. # Strefrextor | 22 Eylül 2007, 14:29 Gravatar

    Cevabınız için çok saolun fakat bu işlerde ben bayağı yeni olduğum için bu kodu tam olarak nereye ekleyeceğimide söylerseniz çok daha memnun olacağım . Şimdiden teşekkürler :)

  10. # çağrı | 01 Ekim 2007, 19:54 Gravatar

    diziler için iyi bir sonuç teşekkürler

  11. # wmwebtr ödüllü seo yarışması | 04 Kasım 2007, 19:21 Gravatar

    Banada oldukça yeni geldi bu konu. Açıklayıcı anlatımlarınız için teşekkürler .

  12. # mustafa | 02 Aralık 2007, 17:25 Gravatar

    Türkçe problemini aşmak için sunucudan gönderdiğin verinin unicode olarak geldiğine dikkat etmen yeterli ama eğer elinde olmayan sebeplerle unicode olarak gönderemiyorsan ki başıma gelmişti bir kere sunucudan ç için |c|, İ için |I| gönderiyordum ve istemci tarafında aşağıdaki gibi bir kod çalıştırıyordum

  13. # ilhan k | 08 Aralık 2007, 18:25 Gravatar

    json_encode ve decode sadece utf8 de çalışıyormuş.
    Veritabanından latin 5 olarak çektiğimiz veriyi bastırırken nasıl UTF8 e çevirebiliriz ki? Yani bu |ç| |İ| çevirimi yeterli değil ki.

  14. # mustafa | 10 Aralık 2007, 08:22 Gravatar

    PHP üzerinde utf8_decode ve utf8_encode fonksiyonlarına bakmanı öneririm.

    iso-8859-1 ile otomatik olarak çalışan bu fonksiyonların yorumlarında polonyaca vs. dönüşümleri için güzel örnekler var. Code-page’i alıp dönüşüm fonksiyonunu kendin yazman gerekecek.

    http://us2.php.net/manual/en/function.utf8-encode.php
    http://us2.php.net/manual/en/function.utf8-decode.php

    Kolay Gelsin,
    Mustafa

  15. # ilhan k | 15 Aralık 2007, 14:36 Gravatar

    $json = ‘{”aİ”:1,”bÜ”:2,”c”:3,”d”:4,”e”:5}’;

    $a= print_r(json_decode(utf8_encode($json)),true);
    echo utf8_decode($a);

    gibi bir kullanım söz konusu ama yetersiz. Türkçe karakterler json da büyük sorun.

  16. # ilhan k | 17 Aralık 2007, 17:17 Gravatar

    Türkçe kullanımıyla ilgili herbişeyi (veritabanı, dosyalar, html çıktılar) UTF-8 yapılınca çözüm sağlanıyor.

    Peki, stringin içinde \n gibi bir karakter olunca, daha doğrusu içeriğin bilemediğimiz bir html dizgisi gelecek olursa JSON kullanımı nasıl olacak?
    Örneğin;
    {”tip”: “Hizmet”, “html_verisi”:”Yapılacak iş
    başka br iş
    Arada bir paragraf ve rastgele

    alt satırlar

    ” }

  17. # Ahmet USLU | 28 Aralık 2007, 15:14 Gravatar

    Ya arkadaşlar kusura bakmayın ben bu örnekten birşey anlamadım.Kafam karıştı diye bilirim.
    Bu kadar uğraşcağımıza direk veritabından php ile yazdırmak daha kolay.
    Bu örnekte json bize ne gibi avantajlar sağlamıştır biri bana açıklıya bilirmi.

  18. # Ramazan | 25 Ocak 2008, 23:57 Gravatar

    Ne güzel yazmışsın çok tebrik ediyorum.Sanırım ana fikir şu ki önemli olan javascript içinde en rahat kullanılabilecek veri tipleri json ile oluşturluyor ve bu bize istemci tarfında büyük kolaylıklar sağlıyor.Sağol.
    Sorum ise şu php kodları üzerinde fare ile gezdirirken her bir php komutu için ayrı bir link tanımlanmış ben sanmıyorum ki bu tek tek tanımlansın bunu nasıl yaptın birde bunu cevaplarsan çok sevinirim. Şimdiden teşekkürler.

  19. # eburhan.com » jQuery ve JSON işlemleri | 08 Mart 2008, 10:32 Gravatar

    […] JSON ve PHP […]

  20. # Ahmet Varol | 20 Mayıs 2008, 08:58 Gravatar

    Ellerinize sağlık öncelikle ancak bende bir sorun var sanırım,
    sizin listele.php nizin sonucu bende
    {”employees”:[{”0″:”1″,”id”:”1″,”1″:”Erhan”,”name”:”Erhan”,”2″:”Burhan”,”surname”:”Burhan”},{”0″:”2″,”id”:”2″,”1″:”Erhan”,”name”:”Erhan”,”2″:”Yakut”,”surname”:”Yakut”}]}
    şekilde oluşuyor. Biraz üzerinde oynayınca {”employees”:[{”id”:”1″,”name”:”Erhan”,”surname”:”Burhan”},{”id”:”2″,”name”:”Erhan”,”surname”:”Yakut”}]} oldu ama sonuctada olması gereken çıktı oluşmuyor sizin olması gereken dediğiniz çıktıyı listele.php de print edince beklenilen görüntü oluşuyor. Gerekli ortamda bir sorun yok gibi php versiyonu felan. Yardımcı olursanız sevinirim bir trick var ama nerde ? iyi çalışmalar

  21. # Ahmet Varol | 20 Mayıs 2008, 10:05 Gravatar

    listele.php deki mysql_fetch_object -> mysql_fetch_row ile değiştirir isek istenilen sonuç elde ediliyor trick sanırım bu kolay gelsin

  22. # ilhan | 27 Mayıs 2008, 12:32 Gravatar

Yorum yazın

sayfa sayacı