如果你和我一样,喜欢在自己的项目中使用开源的JavaS cript框架,那么你可能可以省去使用json2.js文件了,这里以protype.js为例,该文件可以在下载,由于本文不是在讲JavaScript框架,这里我假设你对prototype.js的使用已经有所了
如果你和我一样,喜欢在自己的项目中使用开源的JavaScript框架,那么你可能可以省去使用json2.js文件了,这里以protype.js为例,该文件可以在下载,由于本文不是在讲JavaScript框架,这里我假设你对prototype.js的使用已经有所了解了。
Prototype.js中提供了对Object对象的toJSON方法,你可以使用Object.toJSON()方法来实现对对象的串行化,例如: 复制JSON文本到剪贴板
代码:
双击代码全选
1
2
3
4
5
6
7
8
<pre class="brush:js;toolbar:false;">de>var cat=
{
name:"hellokitty",
height:"6 apples"
}
alert(Object.toJSON(cat));
//将弹出对话框,内容为 {"name": "hellokitty", "height": "6 apples"}de></pre><p>
</p>
另外,在prototype.js中还有另外的JSON支持,主要是在Ajax对象中对Ajax返回请求中JSON内容的解析。这里暂时与我们的内容无关,也不再介绍了。在上面我们一起了解了PHP进行对象串行化的方法以及在JavaScript中进行将对象串行化为JSON的方法。
你 大致会质疑我为什么将二者放在一起,因为他们的语法实际是不完全一样的,然而,在PHP中,可以对JSON文本进行反串行化,也可以将PHP的对象串行化 为 JSON而非PHP风格的文本。这主要是靠json_decode和json_encode两个函数来完成的,需要特别说明的是,这两个函数在PHP 5 >= 5.2.0中才被支持,如果你要编写运行在PHP4环境下的程序,那么这两个函数是不可以使用的。
下面两个例子都基于我们的一个情景假设,即,我们有一个用户注册的模块,这个模块以“面向对象”的方式工作,在json_decode函数实例中,我们在前台将用户的注册信息变为一个类的属性,而后传递到后台的php文件(这里为了简便,就不用Ajax了)。
在json_encode实例中,我们在 html文件中引用一个js文件,地址指向php文件,在php文件中输出json编码后的用户对象(同样为了简便,我们直接生成一个对象而不从数据库中取信息),并在html中输出。
好了,先来看前台的页面json_encode.htm,这个页面模仿了通常的注册页面,在其上面有一个表单,当提交时,触发JavaScript 函数,生成一个用户对象user,将表单内容设为用户对象的属性,生成JSON文本,以POST方式传递到后台的json_encode.php文件。在 js_encode.php文件中,将JSON文本用json_decode函数解析为PHP对象,并输出。