📜  php json_decode - PHP (1)

📅  最后修改于: 2023-12-03 14:45:11.931000             🧑  作者: Mango

PHP json_decode

当需要将一个 JSON 字符串转换为 PHP 数组或对象时,可以使用 PHP 的 json_decode 函数。

语法
mixed json_decode( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] )
  • $json:需要解码的 JSON 字符串。
  • $assoc:可选,如果为 TRUE,则返回结果为数组形式;如果为 FALSE,则返回结果为对象形式。默认为 FALSE
  • $depth:可选,指定解码的最大深度。默认为 512。
  • $options:可选,指定解码时的一些选项。例如,使用 JSON_BIGINT_AS_STRING 将大整数转换为字符串。默认为 0。
示例
<?php
$json = '{"name": "Alice", "age": 20, "friends": [{"name": "Bob", "age": 21}, {"name": "Charlie", "age": 22}]}';
$assoc = json_decode($json, true);
$object = json_decode($json);
 
var_dump($assoc);
/*
array(3) {
  ["name"]=>
  string(5) "Alice"
  ["age"]=>
  int(20)
  ["friends"]=>
  array(2) {
    [0]=>
    array(2) {
      ["name"]=>
      string(3) "Bob"
      ["age"]=>
      int(21)
    }
    [1]=>
    array(2) {
      ["name"]=>
      string(7) "Charlie"
      ["age"]=>
      int(22)
    }
  }
}
*/ 

var_dump($object);
/*
class stdClass#1 (3) {
  public $name =>
  string(5) "Alice"
  public $age =>
  int(20)
  public $friends =>
  array(2) {
    [0] =>
    class stdClass#2 (2) {
      public $name =>
      string(3) "Bob"
      public $age =>
      int(21)
    }
    [1] =>
    class stdClass#3 (2) {
      public $name =>
      string(7) "Charlie"
      public $age =>
      int(22)
    }
  }
}
*/
?>

以上示例中,我们将一个 JSON 字符串转换为了数组和对象形式,并使用 var_dump 函数展示了其结果。

注意事项
  • 如果 JSON 字符串不合法,或者解码失败,将返回 NULL

  • 在使用 json_decode 函数时,应该先检查 JSON 字符串是否合法。可以使用 json_last_error 函数获取最后一次 JSON 解码的错误信息。例如:

    <?php
    $json = 'not a JSON string';
    $data = json_decode($json);
    if(json_last_error() !== JSON_ERROR_NONE) {
        echo 'JSON string is not valid';
    }
    ?>
    

    上述代码将输出 JSON string is not valid