PHP JSON
接下来我们将学习如何使用 PHP 语言来编码和解码 JSON 对象
PHP JSON 环境配置
在 php 5.2.0 及以上版本已经内置 JSON 扩展
PHP JSON 函数
函数 | 描述 |
---|---|
json_encode | 对 PHP 对象或数组进行 JSON 编码 |
json_decode | 对 JSON 格式的字符串进行解码,转换为 PHP 对象或数组 |
json_last_error | 返回最后发生的错误 |
json_last_error_msg | 返回最有发生错误的字符串格式 |
json_encode
PHP json_encode() 用于对 PHP 对象或数组进行 JSON 编码
如果执行成功返回 JSON 数据,否则返回 FALSE
语法
string json_encode ( $value [, $options = 0 ] )
参数
参数 | 说明 |
---|---|
value | 要编码的值,该函数只对 UTF-8 编码的数据有效 |
options | 可是一些常量组成的二进制掩码 |
options 可以使用的常量如下:
序号 | 常量 |
---|---|
1 | JSON_HEX_QUOT |
2 | JSON_HEX_TAG |
3 | JSON_HEX_AMP |
4 | JSON_HEX_APOS |
5 | JSON_NUMERIC_CHECK |
6 | JSON_PRETTY_PRINT |
7 | JSON_UNESCAPED_SLASHES |
8 | JSON_FORCE_OBJECT |
范例
下面的范例演示了如何将 PHP 数组转换为 JSON 格式数据
main.php
<?php /* * filename: main.php * author: 简单教程(www.twle.cn) * Copyright © 2015-2065 www.twle.cn. All rights reserved. */ $arr = array( 'name' => "腾讯", 'site' => "http://www.qq.com", 'products' => array("腾讯 QQ", "微信","腾讯企业邮箱") ); echo json_encode($arr);
运行以上代码,输出结果为:
$ php main.php {"name":"\u817e\u8baf","site":"http:\/\/www.qq.com","products":["\u817e\u8baf QQ","\u5fae\u4fe1","\u817e\u8baf\u4f01\u4e1a\u90ae\u7bb1"]}
下面的代码演示了如何将 PHP 对象转换为 JSON 格式数据
main.php
<?php /* * filename: main.php * author: 简单教程(www.twle.cn) * Copyright © 2015-2065 www.twle.cn. All rights reserved. */ class Emp { public $name = ""; public $hobbies = ""; public $birthdate = ""; } $e = new Emp(); $e->name = "sachin"; $e->hobbies = "sports"; $e->birthdate = date('m/d/Y h:i:s a', strtotime("08/05/1974 12:20:03")); echo json_encode($e);
运行以上范例,输出结果如下
$ php main.php {"name":"sachin","hobbies":"sports","birthdate":"08\/05\/1974 12:20:03 pm"}
json_decode
PHP json_decode() 函数用于对 JSON 格式的字符串进行解码,并转换为 PHP 对象或数组
语法
mixed json_decode ($json [,$assoc = false [, $depth = 512 [, $options = 0 ]]])
参数
参数 | 说明 |
---|---|
json_string | 待解码的 JSON 字符串,必须是 UTF-8 编码数据 |
assoc | 当该参数为 TRUE 时,将返回数组,FALSE 时返回对象 |
depth | 整数类型的参数,它指定递归深度 |
options | 二进制掩码,目前只支持 JSON_BIGINT_AS_STRING |
范例
以下范例演示了如何解码 JSON 数据
<?php $json = '{ "name":"简单教程", "founder_at":"2017-8-8", "site":"www.twle.cn"}'; var_dump(json_decode($json)); var_dump(json_decode($json, true));
运行以上范例,输出结果如下
$ php main.php class stdClass#1 (3) { public $name => string(12) "简单教程" public $founder_at => string(8) "2017-8-8" public $site => string(11) "www.twle.cn" } array(3) { 'name' => string(12) "简单教程" 'founder_at' => string(8) "2017-8-8" 'site' => string(11) "www.twle.cn" }