正文

这段时间在开发一个短网址的 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

如果觉得我的文章对你有用,请随意赞赏