在 PHP 中解析 JSON 主要用到 json_encode 和 json_decode 两个 PHP JSON 函数, 比 PHP 解析 XML 方便很多, 下面详细介绍下 PHP JSON 的使用
JSON 基础介绍
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式
JSON 主要有两种结构:
名称 / 值对的集合, 在 PHP 中可以理解为关联数组 (associative array)
值的有序列表 (An ordered list of values) 在 PHP 中可以理解为普通数组(array)
对象是一个无序的名称 / 值'对集合一个对象以 {(左括号) 开始,}(右括号)结束每个名称后跟一个:(冒号); 名称 / 值' 对之间使用,(逗号)分隔
数组是值 (value) 的有序集合一个数组以 [(左中括号) 开始,](右中括号)结束值之间使用,(逗号)分隔值 (value) 可以是双引号括起来的字符串 (string) 数值 (number)truefalse null 对象(object) 或者数组 (array) 这些结构可以嵌套
我目前对 JSON 的理解更偏向于数组, 类似于 PHP 中的关联数组, 你可以将 PHP 数组转换为 JSON 格式
更多 JSON 的介绍请参考 JSON 官网和 IBM 关于 JSON 的介绍
PHP JSON 解析实例
PHP5.2 开始已经将 JSON 作为 PHP 扩展的一部分, 所以并不需要另外安装 JSON 另外为了保证下面的 PHP JSON 实例不出现中文乱码, 请保证你的编码格式为 UTF8
JSON 是 Javascript 的一部分, 首先我们看下 Javascript 中如何定义 JSON
代码如下:
- var json_obj = {'webName':'PHP 网站开发教程网'};
- alert(json_obj.WebName);
- var json_arr =[{'WebName':'PHP 网站开发教程网','WebSite':'http://www.jb51.net'},{'ArtTitle':'PHP JSON 实例讲解'}]
- alert(json_arr[1].ArtTitle);
- var php_json = [['PHP 网站开发教程网','http://www.jb51.net'],['文章标题','PHP JSON 实例讲解']];
- alert(php_json[1][0]);
在这段 JSON 实例代码中我构建了所有的 JSON 形式,
第 1 行, 定义了 JSON 以对象形式存在
第 4 行, 定义了 JSON 以数组形式存在, 嵌套了 JSON 对象, 所以有点类似于 PHP 的关联数组, 其实仍然是对象
第 7 行, 定了 JSON 以普通数组形式存在
注意: 由于 Javascript 是区分大小写的, 所以访问 JSON 关联数组对象时注意 key 的大小写问题
PHP 与 JSON 格式数据交互时, 第一步需要将 PHP 数组转换为 JSON 格式的数据, 可使用 PHP5 自带的 json_encode 函数, 当 PHP 解析传递过来的 JSON 格式数据时需要使用 json_decode 函数进行解析转换为 PHP 数组, PHP 转换并解析 JSON 数据的实例代码如下
代码如下:
- $json_arr = array('WebName'=>'PHP 网站开发教程网','WebSite'=>'http://www.jb51.net');
- $php_json = json_encode($json_arr);
- echo $php_json;
- $php_json = json_decode($php_json);
- print_r($php_json);
- ?>
说明: 这里通过 PHP 定义了关联数组, 然后通过 json_encode 转换为 JSON 格式的数据, 通过 echo 语句可以看到转换后的 JSON 对象, 通过 PHP JSON 解析函数 json_decode 可以将 JSON 格式的数据解析为 PHP 的关联数组如果编码不正确, JSON 中文会出现乱码如果你使用 Editplus 调试 PHP, 请注意保存文件时编码将 ANSI 改为 UTF8
最后我们来看下完整的 PHP JSON 交互实例
代码如下:
- $json_arr = array('WebName'=>'PHP 网站开发教程网','WebSite'=>'http://www.jb51.net');
- $php_json = json_encode($json_arr);
- ?>
来源: https://www.php1.cn/detail/php-1cce1f94c2.html