参考:
在PHP语言中使用JSON和将json还原成数组的方法
PHP数组和Json之间的转换
一、json定义:
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json,true));
结果就生成了一个关联数组:
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
1、json的分隔符(delimiter)只允许使用双引号,不能使用单引号。
2、json名值对的”名”(冒号左边的部分),任何情况下都必须使用双引号。
3、最后一个值之后不能添加逗号(trailing comma)
4、另外,json只能用来表示对象(object)和数组(array),如果对一个字符串或数值使用json_decode(),将会返回null。
5、json_encode 对变量进行 JSON 编码,将对象或数组转为json。
json_decode 对 JSON 格式的字符串进行解码,转换为 PHP 变量
二、数组转json:
示例一:关联数组
<?php
$array = array("name" => "Eric", "age" => "23");
echo json_encode($array);
?>
输出:
{"name":"Eric","age":"23"}
示例二:关联数组
<?php
$array = array(0 => "Eric", 1 => "23");
echo json_encode($array);
?>
输出:
["Eric","23"]
以上两个例子可以看出,
如果PHP数组的键都是数字,那么json_encode()返回一个数组形式的Json,
如果PHP数组的键全是字符串,那么json_encode()就会返回一个对象形式的Json。
示例三:
<?php
$arr = Array('one', 'two', 'three');
echo json_encode($arr);
?>
输出:
["one","two","three"]
三、数组、对象转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
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("8/5/1974 12:20:03"));
echo json_encode($e);
?>
显示:
{
"name": "sachin",
"hobbies": "sports",
"birthdate": "08/05/1974 12:20:03 PM"
}
示例三:数组+对象
ResponseJson.php
<?php
class ResponseJson
{
/**
* 按json方式输出通信数据
* @param integer $code 状态码 如200、400等
* @param string $message 提示信息
* @param array $data 数据
* return string
*/
public static function json($code, $message = "", $data = array())
{
if (!is_numeric($code)) {
return "";
}
$result = array(
'code' => $code,
'message' => $message,
'data' => $data
);
echo json_encode($result);
}
}
// json_encode() 用于对变量进行 JSON 编码,该函数如果执行成功返回 JSON 数据,否则返回 FALSE 。
CallResonseJson.php
<?php
require_once("ResponseJson.php");
$ar = array(
"auth" => array(
"user" => "customer",
"password" => "password",
"context" => "4",
),
"owner" => array(
"user" => "customer2",
"context" => "4",
),
"language" => "en",
"task" => array(
"code" => "0130",
),
);
ResponseJson::json(200, '数据返回成功', $ar);
//php中:: 意思:类中 静态方法和静态属性的引用方法
显示:
{
"code": 200,
"message": "数据返回成功",
"data": {
"auth": {
"user": "customer",
"password": "password",
"context": "4"
},
"owner": {
"user": "customer2",
"context": "4"
},
"language": "en",
"task": {
"code": "0130"
}
}
}