PHP JSON

什么是 JSON ?

·   JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)

·   JSON 是轻量级的文本数据交换格式

·   JSON 独立于语言 *

·   JSON 具有自我描述性,更易理解

* JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。


环境配置

在 php5.2.0 及以上版本已经内置 JSON 扩展。

JSON 函数

     函数      描述
   json_encode对变量进行 JSON 编码
   json_decode对 JSON 格式的字符串进行解码,转换为 PHP 变量
   json_last_error返回最后发生的错误


json_encode

json_encode() 用于对变量进行 JSON 编码,该函数如果执行成功返回 JSON 数据,否则返回 FALSE 。

语法

json_encode ($value,[,options = 0 ] )

参数

·   value: 要编码的值。该函数只对 UTF-8 编码的数据有效。

·    options:由以下常量组成的二进制掩码:JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK,JSON_PRETTY_PRINT, 

JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT

·   由于json只接受utf-8编码的字符,所以json_encode()的参数必须是utf-8编码,否则会得到空字符或者null。当中文使用GB2312编码,或者外文使用ISO-8859-1编码的时

候,这一点要特别注意。


实例

以下实例演示了如何将 PHP 数组转换为 JSON 格式数据:

<?php
 $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
 echo json_encode($arr);
 ?>

程序运行结果:

{"a":1,"b":2,"c":3,"d":4,"e":5}


以下实例演示了如何将 PHP 对象转换为JSON 格式数据

<?php
 class Emp {
     public $name = "";
     public $hobbies  = "";
     public $birthdate = "";
 }
 $e = new Emp();
 $e->name = "sachin";
 $e->hobbies  = "sports";
 $e->birthdate = date('Y-m-d h:i:s a', "2016/9/19 12:20:03 p");
 $e->birthdate = date('Y-m-d h:i:s a', strtotime("2016/9/19 12:20:03"));
 
 echo json_encode($e);
 ?>

程序运行结果:

{"name":"sachin","hobbies":"sports","birthdate":"2016-09-19 12:20:03 pm"} $json [,$assoc = false [, $depth = 512 [, $options = 0 ]]]


json_decode

 json_decode() 函数用于对 JSON 格式的字符串进行解码,并转换为 PHP 变量。

语法

json_decode ($json [,$assoc = false [, $depth = 512 [, $options = 0 ]]])

参数

·    json_string: 待解码的 JSON 字符串,必须是 UTF-8 编码数据

·    assoc: 当该参数为 TRUE 时,将返回数组,FALSE 时返回对象。

·    depth: 整数类型的参数,它指定递归深度

·    options: 二进制掩码,目前只支持 JSON_BIGINT_AS_STRING 。 


 json_decode()的常见错误

下面三种json写法都是错的,你能看出错在哪里吗?

$bad_json = "{ 'bar': 'baz' }";
$bad_json = '{ bar: "baz" }';

$bad_json = '{ "bar": "baz", }';

对这三个字符串执行json_decode()都将返回null,并且报错。

第一个的错误是,json的分隔符(delimiter)只允许使用双引号,不能使用单引号。

第二个的错误是,json名值对的"名"(冒号左边的部分),任何情况下都必须使用双引号。

第三个的错误是,最后一个值之后不能添加逗号(trailing comma)。

另外,json只能用来表示对象(object)和数组(array),如果对一个字符串或数值使用json_decode(),将会返回null。


实例

以下实例演示了如何解码 JSON 数据:

<?php
 $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
 
 var_dump(json_decode($json));
 var_dump(json_decode($json, true));
 ?>

程序运行结果:

object(stdClass)#1 (5) {  ["a"]=>  int(1)  ["b"]=>  int(2)  ["c"]=>  int(3)  ["d"]=>  int(4)  ["e"]=>  int(5)}array(5) {  ["a"]=>  int(1)  ["b"]=>  int(2)  ["c"]=>  int(3)  ["d"]=>  int(4)  ["e"]=>  int(5)}



继续学习
||
<?php $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); echo json_encode($arr); ?>
提交重置代码