Bu yazımızda günümüzde web yazılımlarında oldukça popüler olan json verilerinin PHP ile nasıl kullanıldığına değineceğiz.
Json (Javascript Object Notation) yapısı genellikle veri depolayan metinsel ifadelerdir. Dosya halinde tutulabilir ve uzantısı .json'dur.
Json verileri anahtar ve değer sözdiziminden oluşur.
Json'lar veri alışverişinde, servislerde, api yapılarında kullanılır ve günümüzde de oldukça popülerdir. Örnek bir json dosyası şu şekildedir.
{
isim: "Zafer",
yas: 26,
sehir: "İstanbul"
}
Php dilinde json oluşturmak ve json okumak için 2 adet yerleşik fonksiyon bulunmaktadır.
json_encode(),
json_decode()
Bu fonksiyonu kullanarak bir diziyi json formatına çevirebiliriz.
Örnek 1:
<?php
$dizi = ["Zafer","Sare","Aşk"];
print_r(json_encode($dizi));
//çıktı : ["Zafer","Sare","Aşk"]
?>
Örnek 2:
<?php
$dizi = [
"isim"=>"Zafer",
"Soyisim"=>"Yildiz",
"Yas"=>"26",
"Meslek"=>"Yazilim Uzmani"
];
print_r(json_encode($dizi));
Kodu çalıştırınca karşımıza şu çıkar: {"isim":"Zafer","Soyisim":"Yildiz","Yas":"26","Meslek":"Yazilim Uzmani"}
?>
Bir json verisini okumak, değerlere ulaşmak için json_decode() fonksiyonunu kullanabiliriz.
Örnek:
<?php
$kisiler= '{"Zafer":26,"Sare":21,"Bahar":4,"Seda":22}';
$diziye_cevir = json_decode($kisiler);
foreach ($diziye_cevir as $k => $v) {
echo $k." ".$v." yaşındadır. <br>";
}
/*
çıktı:
Zafer 26 yaşındadır.
Sare 21 yaşındadır.
Bahar 4 yaşındadır.
Seda 22 yaşındadır.
*/
?>
Yukardaki örnekte foreach döngüsü ile değerlere ulaştık. Eğer foreach kullanmadan değerlere ulaşmak isteseydik aşağıdaki gibi yapmamız yeterli olacaktı.
<?php
$kisiler= '{"Zafer":26,"Sare":21,"Bahar":4,"Seda":22}';
$diziye_cevir = json_decode($kisiler ,true);
echo $diziye_cevir["Zafer"]."<br>";
echo $diziye_cevir["Sare"]."<br>";
echo $diziye_cevir["Bahar"]."<br>";
echo $diziye_cevir["Seda"]."<br>";
/*
çıktı:
26
21
4
22
*/
?>
Burada ince bir nokta var. json_decode($json,true) dersek bize array yani dizi türünde sonuç döndürürken true yazmazsak ve orayı boş bırakırsak bize nesne türünden değer döndürecektir.
<?php
$kisiler= '{"Zafer":26,"Sare":21,"Bahar":4,"Seda":22}';
$diziye_cevir = json_decode($kisiler);
echo $diziye_cevir->Zafer."<br>";
echo $diziye_cevir->Sare."<br>";
echo $diziye_cevir->Bahar."<br>";
echo $diziye_cevir->Seda."<br>";
?>
Bu kodda üstteki kod ile aynı çıktıyı verecektir. Aralarındaki bu farka dikkat etmekte fayda var çünkü bazen farklı veri tiplerinde sonuç almamız gerekebilir.