(PHP 5 >= 5.2.0, PECL json >= 1.2.0)
json_decode — Bir JSON dizgesini çözümler.
Kodlanmış bir JSON dizgesini çözümler ve PHP değişkenine çevirir.
Deşifre edilmiş json dizgesi.
TRUE olduğu zaman nesneler bir ilişkisel diziye dönüştürülür.
Kullanıcı tarafından belirtilen özyineleme derinliği.
json ile şifrelenmiş değerler geriye PHP ye uygun veri türü olarak dönerler. Veriler doğru, yanlış ve boş(büyük-küçük harf duyarsız) şekilde sırasıyla TRUE, FALSE ve NULL olarak dönerler. Dönen değer NULL ise json çözülememiş ya da şifreleme verilen özyineleme derinliğinden daha fazladır.
Örnek 1 - json_decode() örnekleri
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
Yukarıdaki örneğin çıktısı:
object(stdClass)#1 (5) { ["a"] => int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => int(5) } array(5) { ["a"] => int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => int(5) }
Örnek 2 - Diğer örnek
<?php
$json = '{"foo-bar": 12345}';
$obj = json_decode($json);
print $obj->{'foo-bar'}; // 12345
?>
Örnek 3 - json_decode() kullanırken yapılan genel bir hata.
<?php
// Aşağıdaki dizgeler JavaScript de geçerli olmasına karşın JSON da geçerli değildir.
// isim ve değerler çift tırnak içine alınmalıdır.
// tek tırnak geçerli değildir.
$bad_json = "{ 'bar': 'baz' }";
json_decode($bad_json); // boş
// isim çift tırnak içine alınmalıdır.
$bad_json = '{ bar: "baz" }';
json_decode($bad_json); // boş
// sonda kalan virgüle izin verilmez
$bad_json = '{ bar: "baz", }';
json_decode($bad_json); // boş
?>
Örnek 4 - depth hataları
<?php
// Encode the data.
$json = json_encode(
array(
1 => array(
'English' => array(
'One',
'January'
),
'French' => array(
'Une',
'Janvier'
)
)
)
);
// Define the errors.
$json_errors = array(
JSON_ERROR_NONE => 'Hata bulunamadı',
JSON_ERROR_DEPTH => 'Azami yığın boyutu aşıldı',
JSON_ERROR_CTRL_CHAR => 'Kontrol karakteri hatası, muhtemelen yanlış şifrelenmiş',
JSON_ERROR_SYNTAX => 'Sözdizimi hatası',
);
// Farklı derinlikteki hataları gösterir.
foreach(range(4, 3, -1) as $depth) {
var_dump(json_decode($json, True, $depth));
echo 'Son hata : ', $json_errors[json_last_error()], PHP_EOL, PHP_EOL;
}
?>
Yukarıdaki örneğin çıktısı:
array(1) { [1]=> array(2) { ["English"]=> array(2) { [0]=> string(3) "One" [1]=> string(7) "January" } ["French"]=> array(2) { [0]=> string(3) "Une" [1]=> string(7) "Janvier" } } } Son hata : Hata bulunamadı NULL Son hata : Azami yığın boyutu aşıldı
Bilginize:
JSON sınıfı JavaScript değildir, ancak JavaScript'in alt kümesidir.
Bilginize:
Bir hatayı çözmek ve hatanın tam niteliği belirlemek için json_last_error() kullanılabilir.
Sürüm: | Açıklama |
---|---|
5.3.0 | İsteğe bağlı depth(derinlik) eklendi. Öntanımlı özyineleme derinliği 128 ile 512 arasına yükseltildi. |
5.2.3 | Gruplama/iç içe koyma limiti 20 ile 128 arasına yükseltildi. |