Json数据格式

  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)),就可以通过索引来使用数组中的值。

  

 

posted @ 2013-08-19 16:59  追风筝的人  Views(319)  Comments(0Edit  收藏  举报