PHP中Json
PHP中Json
php中的json函数主要有三个:
| 函数 | 描述 |
|---|---|
| json_encode() | 对变量进行 JSON 编码 |
| json_decode | 对 JSON 格式的字符串进行解码,转换为 PHP 变量 |
| json_last_error | 返回最后发生的错误 |
-
认识前提:
-
{},花括号代表包装的是一个对象数据,如:
-
{ "name": "黄家俊", "skill": "php and java" } -
[],中括号代表包装的是一个数组,如:
-
[ { "name": "黄家俊", "skill": "php and java" }] -
二者是可以嵌套使用的
-
-
先说json_encode(),该函数可接受三个参数,我现在基本只用到前两个
-
value:要进行编码的数据,只接受utf-8
-
options:JSON常量
-
depth:设置最大深度。 必须大于0
-
实例:
-
<?php // 1、将数组转换成json $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 } // 2、将对象转换成json class Emp { public $name = ""; public $hobbies = ""; } $e = new Emp(); $e->name = "sachin"; $e->hobbies = "sports"; echo json_encode($e); //输出结果为: { "name":"sachin", "hobbies":"sports" } // 3、将sql查询后的结果集包装成json $sql = "SELECT * FROM $tableName WHERE workNumber = '$userId'"; $result = $con->query($sql); $output = $result->fetch_assoc(); //将outpout打包 echo json_encode($output); //输出结果如下: { "workNumber":"00022", "password":"00022", "name":"林锦", "sex":"女", "birthday":"", "department":"计算机科学与技术", "telephone":"", "email":"", "isExperial":"0", "description":null, "avator":"1", "title":"0" }
-
-
再说json_decode(),该函数接受四个参数,目前我较常用的是前两个
-
json:待解码的 json string 格式的字符串。
-
assoc: 当该参数为 TRUE 时,将返回 数组 ,默认为对象。
-
depth :设置最大深度。
-
options:二进制掩码,目前只支持 JSON_BIGINT_AS_STRING 。
-
实例:
-
<?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; //解析为对象 $jsonObj = json_decode($json); var_dump(json_decode($json)); //解析为数组 $jsonArr = json_decode($json,true); 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) } //获取值的方式: //对于对象类型: echo $jsonObj->a; //输出:1 //对于数组: echo $jsonArr['a']; //输出:1 ?> -
<?php //对于嵌套类型的解析 $json = '[ { "name":"qqdeliver", "count":198, "average":119.8889 }, { "name":"attack", "count":8146, "average":205.2529 } ]'; $obj = json_decode($json); //取出每一个对象 foreach ($obj as $row){ echo $row->name.' '.$row->count.' '.$row->average.'<br>'; } //输出结果: qqdeliver 198 119.8889 load 259612 141.9379
-
-
综上:虽然json的格式有很多种,但基本上只要熟悉基础的用法就能很好地进行打包和解析了,只要理解处理的是对象或者数组就便于操作了。
博主已搬家到csdn了

浙公网安备 33010602011771号