PHP JSON


2021 年 12 月 19 日, Learn eTutorial
1774

在本 PHP 教程中,您将学习 PHP 中的所有 JSON 知识。我们将详细讨论 PHP 中 JSON 的编码和解码。

JSON 是什么意思?

JSON 是 JavaScript Object Notation 的缩写。JSON 是一种轻量级数据传输格式,易于理解和创建。JSON 和 XML 一样,是一种基于文本的格式,人类和计算机都易于编写和解释;但与 XML 不同的是,JSON 数据结构比其 XML 对应物占用更少的带宽。

JSON 可以表示为以下结构

  •     对象: JSON 中的对象定义为键/值对的集合(即 key: value)。每个对象由左花括号 "{" 和右花括号 "}" 分隔。逗号 "," 用于分隔多个键/值对。
  •     数组: JSON 中的数组定义为有序的值列表。数组由左方括号 "[" 表示,由右方括号 "]" 终止。逗号 "," 用于分隔值。

JSON 中的键始终是字符串,但值可以是字符串、整数、true 或 false、null,甚至是对象或数组。字符串必须用双引号括起来。
JSON 数据结构与 PHP 数组非常相似。PHP 内置了用于编码和解码 JSON 数据的函数。这些函数 json_encode() 用于将数据编码为 JSON,json_decode() 用于从 JSON 解码数据。

如何在 PHP 中将数据编码为 JSON?

在 PHP 中,json_encode() 函数用于将数据编码为 JSON。如果成功,此方法生成值的 JSON 表示;否则,返回 FALSE。
语法  


json_encode ( value, options )

示例


$details = array("first_name" => "John", "last_name" => "Doe", "age" => 23);
echo json_encode($details);

输出


{"first_name":"John","last_name":"Doe","age":23}

例如:如果它不是键/值对,并且我们想使用相应的索引作为键,在这种情况下,我们使用 JSON_FORCE_OBJECT 作为选项参数。


$languages = array("PHP", "Python", "Java", "Go", "JavaScript");
echo json_encode($languages, JSON_FORCE_OBJECT);

输出


{"0":"PHP","1":"Python","2":"Java","3":"Go","4":"JavaScript"}

如何在 PHP 中从 JSON 解码数据?

JSON 数据解码与编码一样简单明了。要将 JSON 编码的文本解码为适当的 PHP 数据类型,请使用 PHP json_decode() 函数。

语法


json_decode ($json, assoc, depth, options);

示例


$details = array("first_name" => "John", "last_name" => "Doe", "age" => 23);
echo json_encode($details);

输出


object(stdClass)#1 (3) {
  ["first_name"]=>      
  string(4) "John"      
  ["last_name"]=>       
  string(3) "Doe"       
  ["age"]=>
  int(23)
}

json_decode() 方法默认返回一个对象。但是,您可以提供第二个参数 assoc,它接受一个布尔值,当设置为 true 时,将 JSON 对象转换为关联数组。它默认为 false。
示例


 $json = '{"first_name":"John","last_name":"Doe","age":23}';
var_dump(json_decode($json, TRUE));

输出


array(3) {        
  ["first_name"]=>
  string(4) "John"
  ["last_name"]=> 
  string(3) "Doe" 
  ["age"]=>       
  int(23)
}

单独访问解码元素的示例


$json = '{"first_name":"John","last_name":"Doe","age":23}';
$data = json_decode($json, TRUE);
echo "First Name is " . $data['first_name'] . "\n";
echo "Last Name is " . $data['last_name'] . "\n";
echo "Age is " . $data['age'];

输出


First Name is John
Last Name is Doe
Age is 23

示例 2


$json = '{"first_name":"John","last_name":"Doe","age":23}';
$data = json_decode($json);
echo "First Name is " . $data->first_name . "\n";
echo "Last Name is " . $data->last_name . "\n";
echo "Age is " . $data->age;

输出


First Name is John
Last Name is Doe  
Age is 23