JSON (JavaScript Object Notation) nedir? ve ne için kullanılır?

Json bir veri değişim formatıdır.

Programlama dillerinden bağımsız fakat herhangi bir programlama dilinin kolayca oluşturabileceği ve kolayca anlayabileceği veri taşıma yapısıdır.

Json yapısı

json yapısı genel olarak 2 şekildedir.

Bunlardan birincisi bir anahtar ve karşısında bir değer barındıran yapıdır ki yapısı süslü parantezler arasında tanımlanır.

Yapısını açıklamak gerekirse

[code language=”php”]{ “anahtar”:”değer” }[/code]

üstteki yapıyı örneklendirmek ister isek

[code language=”php”]{ “ad” : “mustafa” , ”soyad” : “yılmaz” }[/code]

buradaki mustafa değerini okumak için ad anahtarına arişmek bizim için yeterlidir.

Bu yapı aynı zamanda diğer programlama dillerinde objeler olarak da isimlendirilebilirler.

İkinci yapı ise doğrudan değerlerin saklandığı yapıdır ki bunun yapısı ise köşeli parantezler arasında tanımlanır.

Yapısını açıklamak gerekirse

[code language=”php”][ “değer”,”değer” ][/code]

üstteki yapıyı örneklendirmek istersek

[code language=”php”][ “mustafa” , “yılmaz” ][/code]

buradaki mustafa değerini okumak istersek doğrudan değerin sıra numarasını belirtmemiz gerekir.

Bu yapı aynı zamanda diğer programlama dillerinde array yani dizi olarak ta isimlendirilebilir.

Şimdi Gelin isterseniz Json yapısının nasıl kullanıldığına bir bakalım.

Öncelikle bir senarya yazalım;

bir web sitesi yapalım bazı ürünlerin listelendiği, biz bunu php ile yazalım.

Ürünler sitede aşağıdaki gibi listelensin

üstteki sitenin kodları na bakacak olursak

[code language=”html”]

<div class="row">
<div class="col-md-4 col-sm-6 col-xs-12">
<div class="single-events single-product margin-bottom-30">
<div class="single-event-thumb" style="text-align: center;">
<img src="http://www.hidrozen.com/public/upload/urun/urun_48.jpg" alt="" style="height:150px!important;"/>
</div>
<div class="event-content">
<h5 style="height: 106px!important;overflow:hidden;background-color:none;"><a href="http://www.hidrozen.com/urun/hidrolik-pompa-piston-56">HİDROLİK POMPA PİSTON</a></h5>
<div class="event-meta shop-meta">
<ul>
<li class="price" style="height:24px!important;overflow:hidden;">
</li>
</ul>
<div class="addto-cart">
<a href="http://www.hidrozen.com/urun/hidrolik-pompa-piston-56">Ürün Detay</a>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12">
<div class="single-events single-product margin-bottom-30">
<div class="single-event-thumb" style="text-align: center;">
<img src="http://www.hidrozen.com/public/upload/urun/urun_47.jpg" alt="" style="height:150px!important;"/>
</div>
<div class="event-content">
<h5 style="height: 106px!important;overflow:hidden;background-color:none;"><a href="http://www.hidrozen.com/urun/hidrolik-piston-55">HİDROLİK PİSTON</a></h5>
<div class="event-meta shop-meta">
<ul>
<li class="price" style="height:24px!important;overflow:hidden;">
</li>
</ul>
<div class="addto-cart">
<a href="http://www.hidrozen.com/urun/hidrolik-piston-55">Ürün Detay</a>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12">
<div class="single-events single-product margin-bottom-30">
<div class="single-event-thumb" style="text-align: center;">
<img src="http://www.hidrozen.com/public/upload/urun/urun_46.jpg" alt="" style="height:150px!important;"/>
</div>
<div class="event-content">
<h5 style="height: 106px!important;overflow:hidden;background-color:none;"><a href="http://www.hidrozen.com/urun/hidrolik-silindir-54">HİDROLİK SİLİNDİR</a></h5>
<div class="event-meta shop-meta">
<ul>
<li class="price" style="height:24px!important;overflow:hidden;">
</li>
</ul>
<div class="addto-cart">
<a href="http://www.hidrozen.com/urun/hidrolik-silindir-54">Ürün Detay</a>
</div>
</div>
</div>
</div>
</div>
</div>
[/code]

peki buraya kadar tamam. Yani site görünüyor herhangi bir problem yok. Ve buraya kadar olan kodları biz html + css ve ana dil olarak php kullanarak yazdık.

Şimdi bu siteyi birde android uygulama olarak yazmak istesek ne olacak.

Site php ile yazılmış veriler php ile çekilmiş dolayısı ile android yazmak istediğimizda andorid  in dili java yada kotlin olsun. Bizim phpde kullandığımız veri taşıma formatlarını java tanımaz. Bu durumda sitenin komple yeniden android için düzenlenmesi lazım. İşte bunu yapmamak için (yada bazı durumlarda bu hiç yapılamadığı için) biz jsondan faydalanarak php de kullandığımız veriyi java içinde kullanılabilir hale getirebiliriz.

Peki nasıl yaparız.

Hemen kısaca açıklayayım.

Üstteki görselin oluşması için elimizdeki veri aslında alttaki gibidir.

[code language=”php”]

[
"1"=>[
"resim"=>"http://www.hidrozen.com/public/upload/urun/urun_48.jpg",
"baslik"=>"HİDROLİK POMPA PİSTON",
"link"=>"http://www.hidrozen.com/urun/hidrolik-pompa-piston-56"
]
"2"=>[
"resim"=>"http://www.hidrozen.com/public/upload/urun/urun_47.jpg",
"baslik"=>"HİDROLİK PİSTON",
"link"=>"http://www.hidrozen.com/urun/hidrolik-piston-55"
]
"3"=>[
"resim"=>"http://www.hidrozen.com/public/upload/urun/urun_46.jpg",
"baslik"=>"HİDROLİK SİLİNDİR",
"link"=>"http://www.hidrozen.com/urun/hidrolik-silindir-54"
]
]

[/code]

biz bu veriyi php ile html çıktısına yazdırdık.

Ama aynı kodu javanında kullanması için verdiğimizde java bunu tanımaz ve dolayısı ile bir işe yaramaz verimiz.

Bunun için php de json_encode() fonksiyonu ile bu veriyi json verisine dönüştürürüz ki bu json verisini alan java kendi içindeki fonksiyon yardımı ile yine kendi dizi tipine dönüştürüp veriyi işlesin.

Aslında json için işaret dili gibi bir kavram kullanabiliriz. Nasılmı? Dünyanın neresine giderseniz gidin acıktığınızı insanlara işaret dili ile anlatabilirsiniz hiçbir dil bilmeden. Ama ben dünyanın neresine gidersem gideyim ben php programlama dilinde iş arıyorum gibi bir şekilde kendinizi ifade edemezsiniz. Buradan çıkarmamız gereken üstte belirttiğim gibi json her programlama dilinin kolayca anlayıp işleme alacağı bir veri taşıma formatıdır.

Son olarak

elimizde aşağıdaki gibi bulunan php ürünler verisini

[code language=”php”]

[
"1"=>[
"resim"=>"http://www.hidrozen.com/public/upload/urun/urun_48.jpg",
"baslik"=>"HİDROLİK POMPA PİSTON",
"link"=>"http://www.hidrozen.com/urun/hidrolik-pompa-piston-56"
]
"2"=>[
"resim"=>"http://www.hidrozen.com/public/upload/urun/urun_47.jpg",
"baslik"=>"HİDROLİK PİSTON",
"link"=>"http://www.hidrozen.com/urun/hidrolik-piston-55"
]
"3"=>[
"resim"=>"http://www.hidrozen.com/public/upload/urun/urun_46.jpg",
"baslik"=>"HİDROLİK SİLİNDİR",
"link"=>"http://www.hidrozen.com/urun/hidrolik-silindir-54"
]
]

[/code]

json formatına dönüştürdüğümüzde

[code language=”php”]

{
1:{
"resim":"http://www.hidrozen.com/public/upload/urun/urun_48.jpg",
"baslik":"HİDROLİK POMPA PİSTON",
"link":"http://www.hidrozen.com/urun/hidrolik-pompa-piston-56"
}
2:{
"resim":"http://www.hidrozen.com/public/upload/urun/urun_47.jpg",
"baslik":"HİDROLİK PİSTON",
"link":"http://www.hidrozen.com/urun/hidrolik-piston-55"
}
3:{
"resim":"http://www.hidrozen.com/public/upload/urun/urun_46.jpg",
"baslik":"HİDROLİK SİLİNDİR",
"link":"http://www.hidrozen.com/urun/hidrolik-silindir-54"
}
}

[/code]

gibi bir çıktı alırız.

 

Facebooktwitterlinkedin