(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL json >= 1.2.0)
json_decode — Bir JSON dizgesini çözümler
Kodlanmış bir JSON dizgesini çözümler ve PHP değerine çevirir.
json
Deşifre edilmiş json
dizgesi.
Bu işlev UTF-8 kodlu dizgelerle çalışır.
Bilginize:
PHP, özgün » RFC 7159'da belirtildiği gibi JSON'ın kapsayıcı kümesini gerçekler.
ilişkisel
true
olduğu zaman JSON nesneleri bir ilişkisel dizilere dönüştürülür. false
belirtilirse JSON nesneleri nesne olarak döndürülür. null
olduğu zaman JSON nesneleri seçenekler
bağımsız değişkeninde JSON_OBJECT_AS_ARRAY
sabiti atanmışsa ilişkisel dizi atanmamışsa nesne olarak döner.
derinlik
Kodlu yapının azami iç içe derinliği. Değer 0
'dan büyük, 2147483647
'den küçük veya buna eşit olmalıdır.
seçenekler
JSON_BIGINT_AS_STRING
, JSON_INVALID_UTF8_IGNORE
, JSON_INVALID_UTF8_SUBSTITUTE
, JSON_OBJECT_AS_ARRAY
, JSON_THROW_ON_ERROR
sabitlerinin bit maskesi. Bu sabitlerin davranışı JSON sabitleri sayfasında açıklanmıştır.
json
ile şifrelenmiş değerler PHP için uygun veri türlerinde döner. true
, false
ve null
değerle sırasıyla true
, false
ve null
olarak döner. json
çözülemediğinde ya da şifreli verinin iç içelik derinliği belirtilenden fazla olduğunda da null
döner.
derinlik
izin verilen aralığın dışındaysa, PHP 8.0.0 ve sonrasında bir ValueError yavrulanır. Evvelce, E_WARNING
seviyesinde bir hata çıktılanırdı.
Sürüm: | Açıklama |
---|---|
7.3.0 | JSON_THROW_ON_ERROR seçeneği eklendi. |
7.2.0 | associative is nullable now. |
7.2.0 | JSON_INVALID_UTF8_IGNORE ve JSON_INVALID_UTF8_SUBSTITUTE seçeneği eklendi. |
7.1.0 | _empty_ değerli bir anahtar kullanmak yerine boş nesne özelliğine boş bir JSON anahtarı ("") kodlanabilir. |
Ö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 - Geçersiz nesne özelliklerine erişim
PHP'nin adlandırma kuralı (örneğin, kısa çizgi) kapsamında izin verilmeyen karakterleri içeren bir nesne içindeki öğelere erişim, öğe adının kaşlı ayraçlar ve tek tırnak imleri arasına alınmasıyla gerçekleştirilebilir.
<?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
// Veriyi azami derinlik olarak 4 iç içelik ile kodla
// (array -> array -> array -> string).
$json = json_encode(
array(
1 => array(
'English' => array(
'One',
'January'
),
'French' => array(
'Une',
'Janvier'
)
)
)
);
// Farklı derinlikteki hataları göster
var_dump(json_decode($json, true, 4));
echo 'Son hata: ', json_last_error_msg(), PHP_EOL, PHP_EOL;
var_dump(json_decode($json, true, 3));
echo 'Son hata: ', json_last_error_msg(), 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: No error NULL Son hata: Maximum stack depth exceeded
Örnek 5 - Büyük tamsayılarla json_decode()
<?php
$json = '{"number": 12345678901234567890}';
var_dump(json_decode($json));
var_dump(json_decode($json, false, 512, JSON_BIGINT_AS_STRING));
?>
Yukarıdaki örneğin çıktısı:
object(stdClass)#1 (1) { ["number"]=> float(1.2345678901235E+19) } object(stdClass)#1 (1) { ["number"]=> string(20) "12345678901234567890" }
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.