Merhaba arkadaşlar, öncelikle JSON tanımını yaparak başlayalım. JSON » JavaScript Object Notation. JavaScript söz dizimini kullanan veri saklayabilen, bağımsız bir dildir. Bu dersimizde ise ayrıntılı bir şekilde PHP ve JQUERY dillerinde json formatında ki verileri array ve object’lere dönüştürme işlemlerine bakacağız veya array ve object’ten json verisine dönüştürmeyi. JSON (JavaScript Object Notation) formatında ki verileri diğerlerine çevirme işlemlerinin akılda kalıcı olması açısından PHP için yukarıda ki resmi dikkatlice incelemenizi tavsiye ediyorum. Merkez de JSON verisi var ve diğerlerine çevirmek için hangi metodları kullanacağız ayrıntılı inceleyelim. Öncelikle elimizde aşağıda ki gibi bir json verisi olduğunu varsayalım. Bu json verisi tek bir resmin özelliklerini(name, extension, size, type) tutan bir veri.
$json_data='[{"name":"resim.jpg","extension":"jpg","size":"559925","type":"image"}]';
Şimdi bu veriyi array formatına çevirmek için yukarıda ki resme baktığımızda 1 numaralı metodu kullanacağımıza dikkat edelim.
$array_data = json_decode($json_data,true);
//json formatından array formatına çevirdik
Şimdi array formatına çevirdikten sonra echo komutu ile ekrana yazdıralım:
echo $array_data;//array
Sonuç olarak ekrana “array” yazdırdık.Bu yazım şekli bazen hata ile sonuçlanabilir.(Array to String hatası) Farklı bir şekilde array’in elemanlarını görmek için var_dump() metodunu kullanabilirsiniz:
var_dump($array_data);
//array(1) { [0]=> array(4) { ["name"]=> string(9) "resim.jpg" ["extension"]=> string(3) "jpg" ["size"]=> string(6) "559925" ["type"]=> string(5) "image" } }
Şimdi $array_data verisinin elemanlarına ulaşalım ve ekrana yazdıralım.Bunun için foreach döngüsünü kullanacağız.
foreach($array_data as $key=>$value){
echo $value['name'];//resim.jpg
echo $value['extension'];//jpg
echo $value['size'];//559925
echo $value['type'];//image
}
Şimdi $array_data verisinin eleman sayısını ekrana yazdıralım:
echo count($array_data);//1
Şimdi direk olarak 1 elemanlı $array_data verisinin ilk elamanının “key” değerlerini ekrana yazdıralım:
echo $array_data[0]['name'];//resim.jpg
echo $array_data[0]['extension'];//jpg
echo $array_data[0]['size'];//559925
echo $array_data[0]['type'];//image
Son olarak JSON formatından ARRAY formatına çevirdiğimiz $array_data verisinin bir array olup olmadığını kontrol edebiliriz.
echo is_array($array_data);//1
//1 dönerse veri array formatıdır
Şimdi JSON verisini OBJECT verisine çevirelim: Yine tek elemanlı bir JSON verimizi kullanalım.
$json_data='[{"name":"resim.jpg","extension":"jpg","size":"559925","type":"image"}]';
Şimdi bu veriyi Object formatına çevirmek için yukarıda ki resme baktığımızda 4 numaralı metodu kullanacağımıza dikkat edelim. Array’e çevirmede ki farkı "true" parametresini kullanmıyoruz.
$object_data= json_decode($json_data);
Şimdi $object_data verisini ekrana yazdıralım.
echo $object_data;//array
Gördüğünüz gibi ekrana “array” yazdı, is_array() metodu ile array olup olmadığını kontrol edelim.
echo is_array($object_data);//1
//1 dönerse veri array formatıdır.
Ancak array_data verisinde ki gibi foreach ile elamanlarına ulaşmak istediğimizde hata döndürecek. Burada şu şekilde elemanlara ulaşabilirsiniz.
foreach($object_data as $key=>$value){
echo $value->name;//resim.jpg
echo $value->extension;//jpg
echo $value->size;//559925
echo $value->type;//image
}
Yine tek elemanlı $object_data verisinin ilk elemanının “key” değerlerine ulaşalım.
echo $object_data[0]->name;//resim.jpg
echo $object_data[0]->extension;//jpg
echo $object_data[0]->size;//559925
echo $object_data[0]->type;//image
Şimdi bir array formatında bir verimizin olduğunu varsayalım. Aynı şekilde 3 resmin özelliklerini tutan 3 elemanlı bir dizi olsun.
$array_data=array(
array(
"name"=>"resim1.jpg",
"extension"=>"jpg",
"size"=>"559925",
"type"=>"image"
),
array(
"name"=>"resim2.jpg",
"extension"=>"gif",
"size"=>"659925",
"type"=>"image"
),
array(
"name"=>"resim3.jpg",
"extension"=>"png",
"size"=>"759925",
"type"=>"image"
),
);
Şimdi bu $array_data verisini JSON formatına çevirmek için yukarıda ki resme baktığımızda 2 numaralı metodu kullanacağımıza dikkat edelim.
echo json_encode($array_data);
//array to json format
Sonuç olarak aşağıda ki gibi bir JSON verisi elde edeceğiz.
[
{"name":"resim1.jpg","extension":"jpg","size":"559925","type":"image"},
{"name":"resim2.jpg","extension":"gif","size":"659925","type":"image"},
{"name":"resim3.jpg","extension":"png","size":"759925","type":"image"}
]
Şimdi bu 3 Elemanlı JSON verisini JQUERY’de işleme alalım: Öncelikle bir JSON verisi tanımlayalım:
var data='[{"name":"resim1.jpg","extension":"jpg","size":"559925","type":"image"},{"name":"resim2.jpg","extension":"gif","size":"659925","type":"image"},{"name":"resim3.jpg","extension":"png","size":"759925","type":"image"}]';
3 elemanlı bir JSON verimiz var(tek satır da olmadığı zaman tırnak harası verebilir!) ve şimdi bu veriyi PARSE edelim:
var parse_data=$.parseJSON(data);
Farklı bir şekilde parse etmek için aşağıda ki kodu da kullanabilirsiniz.
var parse_data=JSON.parse(data);
Şimdi parse edilen verini ilk elemanına ulaşalım.
alert(parse_data[0].name);//resim1.jpg
Daha sonra parse_data verimizi jquery each ile çevirip sırasıyla “key” değerlerine ulaşalım:
$.each(parse_data, function(i, item) {
alert(item.name);
});
Yukarıdaki each döngüsü gibi yazıp elemanlara farklı bir şekilde ulaşabiliriz.
$.each(parse_data, function(i, item) {
alert(parse_data[i].name);
});
Şimdi JQUERY’de öncelikle array tanımlayalım ve içine gireceğimiz elemanları yazalım: Daha sonra bu elemanları array içine ekleyelim.
var array_data=[];
var array_item = {
"name" : "resim1.jpg",
"extension" : "jpg",
"size" : "559925",
"type" : "image",
};
array_data.push(array_item);
Şimdi de array verimizi JSON verisine çevirelim.
alert(JSON.stringify(array_data));
Sonuç olarak aşağıda ki gibi bir veri elde etmemiz gerekecek.
[{"name":"resim1.jpg","extension":"jpg","size":"559925","type":"image"}]