PHP 5.2.0 的新功能 JSON decoder # encoder
作者:Livid
JSON 全称 JavaScript Object Notation,是一种非常轻量级别的数据串行化格式,属于 JavaScript 语言的一部分。比如下面这里是一个例子。
var myJSONObject = {"bindings": [ {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"}, {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"}, {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"} ] };
这样的话,我们将获得一个叫做 myJSONObject 的对象,其中包含一个独立的成员 bindings,bindings 包含一个数组,这个数组有三个对象,这三个对象各自包含三个成员 ircEvent,method 和 regex。
你可以使用其他方式,比如 XMLHTTPRequest 方式获得一个字符串,然后通过下面的方式将其转换为一个 JavaScript 对象。
var myObject = eval('(' + myJSONtext + ')');
与 XML 相比,对 JSON 对象中的数据进行操纵时不需要使用到如 DOM 这样的复杂的 API,而是直接使用如 myJSONObject.bindings[0].ircEvent 这样的语法就可以获得数据,在某些时候显得更灵活一些。
PHP 5.2.0 新版本中默认支持一个新的 JSON extension,实现了两个函数 json_decode() 和 json_encode(),前者可以将 JSON 格式的字符串还原为 PHP native 的数组和常规对象,而后者则可以将 PHP native 的数组和常规对象编码为 JSON 格式的字符串。我觉得这是一个非常有用的功能。我之前已经在我开发的 m2099 应用中使用到了 JSON extension,而那个时候需要自己在服务器上去编译这个 extension,可以想见,在未来的 distribution 中,由于这个 extension 成为 built-in 方式,其使用会更加方便,就好像从 PHP 5.0.0 开始支持的 SimpleXML 对象一样,可以大大节约开发人员的时间,让编码更有乐趣。
JSON 有一个官方网站 http://www.json.org/ ,上面有更详细得多的信息。
O'Reilly 的《Head Rush Ajax》一书中也有关于 JSON 的详细指南和例子。