在本 PHP 教程中,您将学习 PHP 中的所有 JSON 知识。我们将详细讨论 PHP 中 JSON 的编码和解码。
JSON 是 JavaScript Object Notation 的缩写。JSON 是一种轻量级数据传输格式,易于理解和创建。JSON 和 XML 一样,是一种基于文本的格式,人类和计算机都易于编写和解释;但与 XML 不同的是,JSON 数据结构比其 XML 对应物占用更少的带宽。
JSON 中的键始终是字符串,但值可以是字符串、整数、true 或 false、null,甚至是对象或数组。字符串必须用双引号括起来。
JSON 数据结构与 PHP 数组非常相似。PHP 内置了用于编码和解码 JSON 数据的函数。这些函数 json_encode() 用于将数据编码为 JSON,json_decode() 用于从 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"}
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
$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