$Huseyin_KELES->kategori('PHP, Programlama')->yazi('PHP ile JSON Kullanımı')->goster();

PHP ile JSON Kullanımı

Pazar, 26 Tem 2009 yorum ekle yorumlara git

JSONMerhaba,

Bu yazımda JSON dan bahsedeceğim. JSON, Douglas Crockford tarafından hazırlanmış bir veri iletimi formatı. XML nin JavaScript ile kullanımının pratik olmayışından dolayı hazırlanmış. Ama ben bu yazıda JSON‘un javascript‘ten ziyade PHP ile kullanımından bahsedeceğim. Pek çok sitenin API‘leri JSON formatını kullanıyor. Örneğin Google. İleriki günlerde Google API lerinin kullanımından bahsedeceğim için önce JSON‘a değinsem daha iyi olur diye düşündüm.

Genel Yapı

{
“Ad”: “Huseyin”,
“Soyad”: “KELES”,
“Adres”: {
“Ulke”: “Turkiye”,
“Sehir”: “Hatay”
},
“Telefon”: [
"111 222-3333",
"444 555-6666"
]
}


PHP için JSON Fonksiyonları

json_decode

Girilen PHP değişkeninin JSON değerini döndürür. PHP 5.2.1 versiyonunda eklenmiştir.

json_decode örneği

<?php
$json = '{
"a":1,
"b":2,
"c":3,
"d":4,
"e":5
}';

var_dump(json_decode($json));
?>

Yukarıdaki kodu çalıştırdığımızda çıktısı şu şekilde olacaktır;

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


json_encode

Girilen JSON kaynağını PHP değişkenine döndürür. Bu fonksiyon da PHP 5.2.1 versiyonunda eklenmiştir.

json_encode örneği

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

echo json_encode($arr);
?>

Yukarıdaki kodu çalıştırdığımızda çıktısı şu şekilde olacaktır;

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

İleriki günlerde Google ve diğer çeşitli sitelerin API’lerinin kullanımına yer vereceğiz. O yüzden JSON’u iyi bir şekilde kavramamız gerekecek.


Paylaş:
  • Facebook
  • FriendFeed
  • Twitter
  • del.icio.us
  • Digg
  • StumbleUpon
  • Technorati
  • LinkedIn
  • MySpace
  • BlinkList
  • Reddit
  • RSS
  • email
  • PDF

Benzer Yazılar (bunları bilgisayar seçiyor);

Categories: PHP, Programlama 25.311 Gösterim
  1. DrakCoder
    Çarşamba, 05 Ağu 2009 zamanında 02:15 | #1

    Türkçe kaynak bakımından kıtlık çekilen bir konuya değinmişsiniz veyada ben bulamadım. Neyse efendim ben soruma geleyim youtube dan videoları göstermeye yarayan kendimce bir kod yazmaya çalışıyorum ve bu örnek json_decode kodunu kullanıldığını keşfettim. Ne işe yarar diye düşünürken meraktan sizin bloğunuza denk geldim. Merak ettiğim konu şu;

    {‘fmt_url_map’}), $matches);
    $url = explode(‘,’, $matches[0]);

    header(“Location: {$url[0]}”); //high quality video

    ?>

    yukarıdaki php kodunda json_decode($matches[0][1]); kısmı youtubedaki sanırım flv indirme adresini belirliyor. çünkü bu kodun çıktısı şunu vermekte misal olarak;

    http://www.site.com/youtube.php?v=R__k-8iCj24 şeklinde girildiğinde çıktısı;

    http://v4.lscache8.c.youtube.com/videoplayback?ip=0.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cburst%2Cfactor&itag=22&ipbits=0&signature=49487B3662D06D8619968F422AC64E0ADBB98EC7.C8C7CAA24A2B34D30DD791049EC308DF4A12E1C5&sver=3&expire=1249452000&key=yt1&factor=1.25&burst=40&id=47ffe4fbc8828f6e vermekte ve bu link o flv download linki olmakta. Ve bu linki herzaman kullanamıyorsunuz verdiğim kod aynı video idsinde sürekli değişik flv linkleri vermekte ve bir önceki flv linki kullanılmaz hale geliyor. ,

    Ayrıca diğer takıldğım bir konuda şu yukarıda vermiş olduğum flv linkini türkiyede indirmem imkansız bunu ben youtube ip şeklinde girdiğimde link çalışmakta ama bunu bu scriptte bi türlü entegre edemedim. Foreach döngüsünü denedim ama başarısız oldum

    http://74.125.99.80/videoplayback?ip=0.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cburst%2Cfactor&itag=22&ipbits=0&signature=49487B3662D06D8619968F422AC64E0ADBB98EC7.C8C7CAA24A2B34D30DD791049EC308DF4A12E1C5&sver=3&expire=1249452000&key=yt1&factor=1.25&burst=40&id=47ffe4fbc8828f6e

  2. Çarşamba, 05 Ağu 2009 zamanında 10:29 | #2

    Youtube API’si hakkında pek bir bilgim yok, ama eğer flv linki her seferinde değişiyorsa siz de videoyu oynattığınız yerde herseferinde yeniden flv linkini alın ve oynatın.

    youtube.com u ip adresine çevirmek için ise str_replace fonksiyonunu kullanabilirsiniz.

    $flv_linki = str_replace(“youtube.com”, “74.125.99.80″, $flv_linki);

    gibi bir kod işinizi görecektir.

    çalışmalarınızda başarılar.

  3. DrakCoder
    Çarşamba, 05 Ağu 2009 zamanında 17:15 | #3

    teşekkür ederim işime yaradı :)

  4. Çarşamba, 05 Ağu 2009 zamanında 20:26 | #4

    rica ederim,..

  5. yasin inat
    Pazartesi, 06 Ara 2010 zamanında 02:00 | #5

    PHP 5.2.1 vurgusunu biraz daha abartmak gerekebilir.
    Halen PHP versiyonunu güncellememiş bir çok hosting şirketleri var.
    PHP’nin desteklemediği bir hostta çalışıyorsanız, json_encode ve json_decode için PEAR kullanmak işinizi kolaylaştıracaktır.
    kullanım örneği alttaki linkte. php 4 ve 5.1X için
    http://www.epigroove.com/posts/97/how_to_use_json_in_php_4_or_php_51x

  6. weboptimier
    Cuma, 31 Ara 2010 zamanında 22:56 | #6

    hocam sitenin temasını cok begendim güzel editlemissin verebilme sansın varmıdır karsılıgında linkini eklesem ?

  1. Salı, 05 Eki 2010 zamanında 15:29 | #1