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 参考。