PHP ile JSON dosyasından veri okuma

Bu makalede PHP ile uzak yada aynı dizinde bulunan bir JSON dosyasından verileri okumayı ve ekrana yazdırmayı göreceğiz.

php - 23-09-2020 21:01

JSON nesneye yönelik esnek, hızlı bir veri formatıdır. Günümüzde TypeScript popülerleşmesiyle neredeyse her yerde karşımıza çıkmaktadır. JSON ile verilerimizi çok kolay sunabilir okuyabilir ve ekrana yazdırabiliriz. JSON okumak için herhangi bir programlama dili kullanabilirsiniz ancak biz PHP ile bu konuyu işleyeceğiz. Örnek bir JSON Döviz kuru servisi üzerinden işlemler yapacağız. 

Bir JSON dosyasında veriler genel olarak nesne veya dizi olmak üzere iki temel yapıdan meydana gelebilir. Bu özelliği onu popüler yapan en önemli özelliklerinden birisidir. Çünkü çoğu programlama dilinde object ve array kavramı vardır. 

Şimdi PHP ile JSON verilerini okumanını yollarına uygulamalı olarak bakalım.

JSON Decode ile Verileri Okumak

JSON decode fonksiyonu, Json formatında gelen verileri çözerek PHP’de kullanabileceğimiz biçimlere dönderiyor. Çözümleme işleminden sonra default’ta değerler bize Obje (Object) veya dizi (Array) olarak geri dönmektedir.

Yani Json decode fonksiyonu 2 temel biçimde bize veri dönüşü sağlıyor. Örnek olması açısından Ip test api’sine bağlanıp verileri Json olarak ekrana yazdıralım. Api url’miz şu;

https://api.gazisoft.com/services.php?service=currency

Burada Gazisoft tarafından verilen Döviz Kuru API'sini inceleyeceğiz. Gördüğünüz üzere bu APı'de veriler JSON formatındadır. Şimdi bunu PHp ile okuyalım. 

<?php $Currency = file_get_contents("https://api.gazisoft.com/services.php?service=currency"); echo $Currency; ?>

Kodumuzu çalıştırdığımızda ekranımıza şu şekilde değerler dönecektir.

{"Dolar":[{"buying":"7,6970","sales":"7,6970","status":1,"icon":"//api.gazisoft.com/services/img/dollar.png"}],"Euro":[{"buying":"8,9961","sales":"8,9961","status":1,"icon":"//api.gazisoft.com/services/img/euro.png"}],"Gold":[{"buying":"461,92","sales":"461,92","status":-1,"icon":"//api.gazisoft.com/services/img/gold.png"}],"Bits":[{"buying":"1.103","sales":"1.103","status":1,"icon":"//api.gazisoft.com/services/img/bits.png"}],"Sterlin":[{"buying":"9,8193","sales":"9,8193","status":1,"icon":"//api.gazisoft.com/services/img/bits.png"}],"Ruble":[{"buying":"0,1001","sales":"0,1001","status":0,"icon":"//api.gazisoft.com/services/img/ruble.png"}]}

Burada dikkat ederseniz Doviz adı, alış fiyatı, satış fiyatı, durumu, iconu gibi verileri bize json formatında verdiğiniz görürüz. 

Şimdi ise asıl işimiz olacak Json decode fonksiyonumuz ile bu değerleri kullanabileceğimiz değerlere dönüştürüyoruz.

<?php $Currency = file_get_contents("https://api.gazisoft.com/services.php?service=currency"); $data = json_decode($Currency); ?>

Bu şekilde yaptığımızda bize PHP Object olarak verileri döndürecektir. Yani değişkenlerimizi : 

echo $data->Dolar;

Tarzında yapmamız gerekiyor. Peki Object değilde Array olarak almak istediğimizde ne yapacağız? 

Cevabı çok basit decode fonksiyonu içerisinde kaynaktan sonra true dememiz yeterli olacaktır. 

<?php $Currency = file_get_contents("https://api.gazisoft.com/services.php?service=currency"); $data = json_decode($Currency,true); ?>

Şimdi ise değişkenimiz şöyle oldu ; 

echo $data[Dolar][0][buying];

Bu bize JSON formatındaki Dolar parametresinin 0. dizinin buying parametresinin değerini döndürecektir. 

Burada dikkat etmemiz gereken şey eğer Json formatında iç içe veriler var ise mutlaka Array olarak almamız gerekiyor. Array olarak aldığımız değerlerde ise kaçıncı sırada ve hangi parametre altında olduğuna dikkat ederek yukarıdaki örnekte olduğu gibi bastırabiliriz. 

Eğer kaçıncı parametrenini olduğunu bilmiyorsak o zaman gelen tüm kaynağı print_r(); ile ekrana yazdırarak bunu görebilirsiniz. 

Aşağıdaki kodu inceleyelim; 

$Currency = file_get_contents("https://api.gazisoft.com/services.php?service=currency"); $Currency=json_decode($Currency,true); print_r($Currency);

Burada kaynağı dekoce ettikten sonra tüm veriyi print_r() ile ekrana yazdırıyoruz ve aşağıdaki gibi bir çıktı verecektir. 

Array ( [Dolar] => Array ( [0] => Array ( [buying] => 7,6985 [sales] => 7,6985 [status] => 1 [icon] => //api.gazisoft.com/services/img/dollar.png ) ) [Euro] => Array ( [0] => Array ( [buying] => 8,9981 [sales] => 8,9981 [status] => 1 [icon] => //api.gazisoft.com/services/img/euro.png ) ) [Gold] => Array ( [0] => Array ( [buying] => 461,30 [sales] => 461,30 [status] => -1 [icon] => //api.gazisoft.com/services/img/gold.png ) ) [Bits] => Array ( [0] => Array ( [buying] => 1.103 [sales] => 1.103 [status] => 1 [icon] => //api.gazisoft.com/services/img/bits.png ) ) [Sterlin] => Array ( [0] => Array ( [buying] => 9,8193 [sales] => 9,8193 [status] => 1 [icon] => //api.gazisoft.com/services/img/bits.png ) ) [Ruble] => Array ( [0] => Array ( [buying] => 0,1001 [sales] => 0,1001 [status] => 0 [icon] => //api.gazisoft.com/services/img/ruble.png ) ) )

Bundan sonrası da daha kolaylaşacaktır. 

İyi kodlamalar dilerim.

Günün Diğer Haberleri