JSON是一种数据格式,全称为Javascript Object Notation。在Javascript,这个格式的数据可以很容易的转换为类的格式。
例如:
<script type="text/javascript"> json = '{"name" : "SurfChen", "skill": ["PHP","Javascript"]}'; the_obj = eval("("+json+")"); //上面两行等同于the_obj = {"name" : "SurfChen", "skill": ["PHP","Javascript"]},注意引号的数量 </script>
这时候
the_obj.name == ‘SurfChen’;
the_obj.skill[0] == ‘PHP’;
the_obj.skill[1] == ‘Javascript’;
而在几个月前发布的Zend Framework里,包含了一个叫Zend_Json的库,它可以让我们在PHP里很方便的把对象/数组的数据转换为JSON格式,或者把JSON格式转换为对象/数组的格式。
例1,JSON转换成对象
require_once("Json.php"); $json='{"name" : "SurfChen", "skill": ["PHP","Javascript"]}'; print_r(Zend_Json::decode($json,Zend_Json::TYPE_OBJECT));
输出:
stdClass Object ( [name] => SurfChen [skill] => Array ( [0] => PHP [1] => Javascript ) )
例2,JSON转换成数组
require_once("Json.php"); $json='{"name" : "SurfChen", "skill": ["PHP","Javascript"]}'; print_r(Zend_Json::decode($json,Zend_Json::TYPE_ARRAY));
输出:Array ( [name] => SurfChen [skill] => Array ( [0] => PHP [1] => Javascript ) )
例3,对象转换成JSON
require_once("Json.php"); class person { public $name = 'surfchen'; public $skill = array('php','javascript'); } $surfchen=new person; echo Zend_Json::encode($surfchen);
输出:{”__className”: “person”, “name” : “surfchen”, “skill” : [”php”, “javascript”]}
需要注意的是,PHP里,JSON里的键名和值,都必须以双引号括起来,而JS里,双引号和单引号皆可。