JavaScript 对象表示法 (JSON) 是一种独立于语言的数据格式,用于存储和交换数据。它是一种基于文本的格式,可以轻松地与服务器发送和接收,并可以被任何编程语言用作数据格式。对于 PHP 语言,JSON 是将 PHP 对象编码为 JSON、将 JSON 发送到服务器并解码回 PHP 对象的文本。
PHP 中的 JSON
PHP 具有 JSON 扩展它实现了 JavaScript 对象表示法 (JSON) 数据交换格式。该扩展默认捆绑并编译到 PHP 中。
json_encode() 函数
PHP json_encode() 函数返回一个字符串包含给定值的 JSON 表示形式。
示例:json_encode() 示例
下面的示例演示如何将 json_encode() 函数与PHP 数组。
<?php
//声明一个数组
$arr = array('a' => 10, 'b' => 20, 'c' => 30);
//使用json_encode()函数
//编码成JSON字符串
$jsonObj = json_encode($arr);
//显示结果
echo $jsonObj;
?>
上述代码的输出将是:
{"a":10,"b":20,"c":30}
示例:带有 PHP 对象的 json_encode() 示例
示例下面显示了如何将此函数与 PHP 对象一起使用。
<?php
//声明一个类
class person {
}
//声明一个对象
$p1 = new person();
//设置对象元素
$p1->name = "John";
$p1->email = "john@example.com";
//使用json_encode()函数
//编码成JSON字符串
$jsonObj = json_encode($p1);
//显示结果
echo $jsonObj;
?>
上述代码的输出将是:
{"name":"John","email":"john@example.com"}
json_decode() 函数
PHP json_decode() 函数解码 JSON 编码字符串并将其转换为 PHP 变量。如果可选的第二个参数设置为 true,则 JSON 对象将作为关联数组返回。如果设置为 false,JSON 对象将作为对象返回。
示例:json_decode() 示例
下面的示例显示 json_decode() 的用法
<?php
//声明一个JSON字符串
$jsonObj = '{"a":10,"b":20,"c":30}';
//使用json_decode()函数
//解码JSON字符串
var_dump(json_decode($jsonObj));
echo "\n";
var_dump(json_decode($jsonObj, true));
?>
上述代码的输出将是:
object(stdClass)#1 (3) {
["a"]=>
int(10)
["b"]=>
int(20)
["c"]=>
int(30)
}
array(3) {
["a"]=>
int(10)
["b"]=>
int(20)
["c"]=>
int(30)
}
示例:访问对象属性
下面的示例显示如何访问来自 PHP 对象的属性。
<?php
//声明一个JSON字符串
$jsonObj = '{"a":10,"b":20,"c":30}';
//使用json_decode()函数
//解码JSON字符串
$obj = json_decode($jsonObj);
echo $obj->a;
echo "\n";
echo $obj->b;
echo "\n";
echo $obj->c;
?>
上述代码的输出将是:
10
20
30
示例:从关联数组访问值
下面的示例显示了如何从 PHP 关联数组访问值。
<?php
//声明一个JSON字符串
$jsonObj = '{"a":10,"b":20,"c":30}';
//使用json_decode()函数
//解码JSON字符串
$arr = json_decode($jsonObj, true);
echo $arr['a'];
echo "\n";
echo $arr['b'];
echo "\n";
echo $arr['c'];
?>
上述代码的输出将是:
10
20
30
示例:循环访问值
foreach() 可用于访问所有值。
<?php
//声明一个JSON字符串
$jsonObj = '{"a":10,"b":20,"c":30}';
//使用json_decode()函数
//将JSON字符串解码为对象
$obj = json_decode($jsonObj);
//使用foreach循环访问所有值
foreach($obj as $key => $value) {
echo $key ." => ". $value ."\n";
}
echo "\n";
//使用json_decode()函数
//将JSON字符串解码为数组
$arr = json_decode($jsonObj, true);
//使用foreach循环访问所有值
foreach($arr as $key => $value) {
echo $key ." => ". $value ."\n";
}
?>
上述代码的输出将是:
a => 10
b => 20
c => 30
a => 10
b => 20
c => 30
完整的 PHP JSON 参考
有关所有 PHP JSON 函数的完整参考,请参阅完整的 PHP JSON 参考。