正文
这段时间在开发一个短网址的 API 接口,就看了很多关于 API 的相关文章,最常用到的就是 JSON 技术,JSON 又叫做 JS 对象标记,是一种轻量级的数据交换格式,因为我的 API 开发语言是 PHP,所以在数据处理的过程中,就要用到 JSON 与 PHP 的交互,也就是数据转换。
下面我主要介绍一下 JSON 与数组(Array)的转换的两种方式。
json_encode()
由于 JSON 只接受 UTF-8 编码的字符,所以 json_encode()
的参数必须是 UTF-8 编码,否则会得到空字符或者 null
,当中文使用 GB2312
编码的时候,这一点要特别注意!
实例一(数组)
<?php
$array_a =array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($array_a);
?>
输出
{"a":1,"b":2,"c":3,"d":4,"e":5}
实例二(对象)
<?php
$obj->body = 'another post';
$obj->id = 21;
$obj->approved = true;
$obj->favorite_count = 1;
$obj->status = NULL;
echo json_encode($obj);
?>
输出
{
"body":"another post",
"id":21,
"approved":true,
"favorite_count":1,
"status":null
}
json_decode()
该函数用于将 JSON 文本转换为相应的 PHP 数据结构,通常情况下, json_decode() 总是返回一个PHP对象,而不是数组。
案例三
<?php
$json ='{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
?>
输出
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
如果想要强制生成 PHP 关联数组, json_decode()
需要加一个参数 true
实例四
<?php
$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)
}
另外,JSON 只能用来表示对象(object)和数组(array),如果对一个字符串或数值使用 json_decode()
,将会返回 null
。