现在的各种接口,各种移动端开发都是通过json来返回或者调用数据,甚至有种说法是json正要逐步取代xml的位置。那么json到底是什么呢?其实就是一种数据格式而已,只不过主要用途是在数据的交互上而已。php提供了json_encode()和json_decode()两个函数,前者用于编码,后者用于解码。
先来说说json_encode(),主要是将数组和对象,转换成json格式。
$arr =array("one","two","threee");
echo json_encode($arr); //结果是["one","two","threee"]
$arr1 =array('1'=>"one","2"=>"two","3"=>"three");
echo json_encode($arr1); // 结果是{"1":"one","2":"two","3":"three"}
由于js不支持关联数组,所以将索引数组转换成数组格式,而将关联数组转换成对象格式。
Json_decode()用于将json对象转换成数组或者对象:
$arr1 = array('1'=>"one","2"=>"two","3"=>"three");
$arr =json_encode($arr1); //{"1":"one","2":"two","3":"three"}
var_dump(json_decode($arr)) ; //object(stdClass)#3 (3) {["1"]=> string(3) "one" ["2"]=> string(3)"two" ["3"]=>string(5) "three" }
通常情况下,json_decode()总是返回一个PHP对象,而不是数组。如果想要生成php关联数组,就需要再json_decode(param1,param2),param2的参数就要设置为true了。另外,json格式中的参数必须用双引号,比如,$json = {“one”=>”onetwoghr”},one必须要用双引号,如果用单引号或者不加引号都会报错,经过json_decode()解析后会返回null对象。
另外,json只能用来表示对象(object)和数组(array),如果对一个字符串或数值使用json_decode(),将会返回null。