(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.
json
Deşifre edilmiş json
dizgesi.
assoc
TRUE
olduğu zaman nesneler bir ilişkisel diziye dönüştürülür.
depth
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. |