json_decode

(PHP 5 >= 5.2.0, PHP 7, PECL json >= 1.2.0)

json_decodeBir JSON dizgesini çözümler.

Açıklama

json_decode ( string $json [, bool $assoc = false [, int $depth = 512 ]] ) : mixed

Kodlanmış bir JSON dizgesini çözümler ve PHP değişkenine çevirir.

Değiştirgeler

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.

Dönen Değerler

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.

Örnekler

Ö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($jsontrue));

?>

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(
        
=> 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(43, -1) as $depth) {
    
var_dump(json_decode($jsonTrue$depth));
    echo 
'Son hata : '$json_errors[json_last_error()], PHP_EOLPHP_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ı

Notlar

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 Bilgisi

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.

Ayrıca Bakınız