Json是一种数据格式,用于服务器之间相互传递数据,这种数据格式出现以前,服务器间传递数据都是采用XML格式,但Douglas Crockford觉得XML的生成和解析都太麻烦,于是便诞生了Json数据格式。
Json格式的规范比较简单,
1) 并列的数据之间用逗号(", ")分隔, 比如: "北京","上海"
2) 映射用冒号(": ")表示。 比如:"城市":"北京","城市":"上海"
3) 并列数据的集合(数组)用方括号("[]")表示。 比如: ["北京","上海"]
4) 映射的集合(对象)用大括号("{}")表示。比如:{["城市":"北京","城市":"上海"]}
参考:http://www.ruanyifeng.com/blog/2009/05/data_types_and_json.html
刚刚走出校园,PHP中有json_encode()函数,可以把数组转换为json格式,举个例子,假设前台smarty页面中需要一个用户信息数组
$userinfo = array( 'user1' => array('name' => '张三', 'sex' => '男', 'age' => '18',), 'user2' => array('name' => '李四', 'sex' => '女', 'age' => '20',), )
通过json_encode()函数进行转换之后变为
{"user1":{"name":null,"sex":null,"age":"18"},"user2":{"name":null,"sex":"u016e","age":"20"}} 注意:1) 数组中的汉字被转化为了null,理由很简单,json_encode()为了与前台保持一致,所以只支持utf-8编码,可以使用urlencode()对数组中的汉字进行转换,当使用的时候利用urldecode()转回来即可。例如: foreach($userinfo as $key => $value){ $userinfo[$key]['name'] = urlencode($userinfo[$key]['name']);
$userinfo[$key]['sex'] = urlencode($userinfo[$key]['sex']); } echo urldecode(json_encode($userinfo)); //此时输出的json格式数据为{"user1":{"name":"张三","sex":"男","age":"18"},"user2":{"name":"李四","sex":"女","age":"20"}}
2) 根据json格式规范,一对大括号("{}")存放的是对象的集合,如果$userinfo数组是一个索引数组,则返回的是一个数组的集合(位于中括号"[]"里)
["user1":{"name":"张三","sex":"男","age":18}],"user2":{"name":"李四","sex":"女","age":"20"}],如果对索引数组转换后希望得到对象的集合而非数组的集合,可以对索引数组进行强制类型转换为object类型 echo json_encode((object)$userinfo)
此json格式的数组在被传到前台之后,通过使用eval函数(eval($userinfo)),就可以通过索引来使用数组中的值。