PHP 8'de json_decode()
fonksiyonu, JSON formatındaki verileri PHP dizisine veya nesnesine dönüştürmek için kullanılır. Bu fonksiyon, genellikle bir API'den gelen veriyi işlemek, bir dosyadan okunan JSON verilerini kullanmak veya kullanıcı girdilerini JSON formatında almak amacıyla kullanılır.
json_decode()
Fonksiyonunun Kullanımı
json_decode()
fonksiyonu, bir JSON stringini PHP değişkenine dönüştürür. JSON verisi, nesne veya dizi olarak çözümlenebilir. Bu fonksiyon iki ana parametre alır:
-
json
: JSON formatındaki string veri. -
assoc
(isteğe bağlı):true
olarak ayarlanırsa, JSON verisi bir diziye dönüştürülür. Varsayılan olarakfalse
'dur ve JSON verisi bir nesneye dönüştürülür.
Temel Kullanım
Örnek: JSON'u PHP Nesnesine Dönüştürme
<?php
$json_veri = '{"isim": "Ahmet", "yas": 25, "meslek": "Yazılımcı"}';
// JSON stringini PHP nesnesine dönüştür
$veri = json_decode($json_veri);
// Nesnenin içeriğine erişme
echo $veri->isim; // Çıktı: Ahmet
echo $veri->yas; // Çıktı: 25
echo $veri->meslek; // Çıktı: Yazılımcı
?>
Bu örnekte, JSON stringi bir PHP nesnesine dönüştürülür ve nesne elemanlarına ->
operatörü ile erişilir.
Örnek: JSON'u PHP Dizisine Dönüştürme
<?php
$json_veri = '{"isim": "Ahmet", "yas": 25, "meslek": "Yazılımcı"}';
// JSON stringini PHP dizisine dönüştür
$veri = json_decode($json_veri, true);
// Dizinin elemanlarına erişme
echo $veri['isim']; // Çıktı: Ahmet
echo $veri['yas']; // Çıktı: 25
echo $veri['meslek']; // Çıktı: Yazılımcı
?>
Bu örnekte, json_decode()
fonksiyonunun ikinci parametresi true
olarak ayarlanmış, böylece JSON verisi bir PHP dizisine dönüştürülmüştür. Dizinin elemanlarına []
ile erişilir.
Çok Katmanlı (Nested) JSON Verisini Decode Etmek
Eğer JSON verisi içinde başka JSON yapıları barındırıyorsa (yani çok katmanlıysa), bu yapılar da aynı şekilde decode edilir.
<?php
$json_veri = '{
"isim": "Ahmet",
"yas": 25,
"meslek": "Yazılımcı",
"beceriler": {
"programlama": ["PHP", "JavaScript", "Python"],
"veri_tabani": "MySQL"
}
}';
// JSON stringini PHP dizisine dönüştür
$veri = json_decode($json_veri, true);
// İç içe dizilere erişim
echo $veri['beceriler']['programlama'][0]; // Çıktı: PHP
echo $veri['beceriler']['veri_tabani']; // Çıktı: MySQL
?>
Bu örnekte, JSON verisi iç içe diziler içerir ve bunlara dizi indeksleriyle erişilebilir.
Hataları Yakalamak
Eğer json_decode()
fonksiyonu hatalı bir JSON verisiyle çalışırsa null
döner. Hata olup olmadığını kontrol etmek için json_last_error()
ve json_last_error_msg()
fonksiyonları kullanılabilir.
Örnek: JSON Hatalarını Kontrol Etmek
<?php
$json_veri = '{"isim": "Ahmet", "yas": 25, "meslek": "Yazılımcı"'; // Hatalı JSON (eksik bir kapatma parantezi var)
$veri = json_decode($json_veri);
if (json_last_error() !== JSON_ERROR_NONE) {
echo "JSON hatası: " . json_last_error_msg();
} else {
echo "İsim: " . $veri->isim;
}
?>
Bu örnekte, JSON stringinde hata olduğu için json_last_error_msg()
fonksiyonu, JSON hatasının açıklamasını ekrana yazdırır.
json_decode()
Parametreleri
-
json
: JSON formatındaki string veri. -
assoc
(isteğe bağlı):true
olursa diziye,false
olursa nesneye dönüştürür. Varsayılan olarakfalse
. -
depth
(isteğe bağlı): JSON çözümlemesinde izin verilen maksimum derinlik. Varsayılan olarak512
'dir. -
options
(isteğe bağlı):JSON_BIGINT_AS_STRING
gibi çözümleme sırasında kullanılacak ekstra bayraklar.
Örnek: Derinlik Parametresi ve Ekstra Seçenekler
<?php
$json_veri = '{"sayilar": 12345678901234567890}';
// JSON verisini PHP nesnesine dönüştürürken büyük sayıları string olarak al
$veri = json_decode($json_veri, false, 512, JSON_BIGINT_AS_STRING);
echo $veri->sayilar; // Çıktı: 12345678901234567890 (string olarak)
?>
Bu örnekte, büyük bir sayı JSON_BIGINT_AS_STRING
bayrağıyla string olarak çözümlenir.
Sonuç
-
json_decode()
fonksiyonu, JSON formatındaki verileri PHP dizisine veya nesnesine dönüştürmek için kullanılır. - Eğer JSON verisini dizi olarak almak isterseniz,
assoc
parametresinitrue
olarak ayarlamalısınız. - Hataları kontrol etmek ve yönetmek için
json_last_error()
vejson_last_error_msg()
fonksiyonlarını kullanabilirsiniz.
Bu, PHP ile JSON verileri üzerinde çalışırken temel bir araçtır ve PHP 8'de API verilerini işlemekten dosya verilerini yönetmeye kadar birçok yerde kullanılabilir.