快速业务通道

PHP串行化与JSON

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-25
on2.js,你可以从这里获得它。

获得完毕json2.js文件后,你可以打开这个文件,在文件的前部分包含了相当大量的注释信息,如果你的英文足够好,那么你可以省略我这一节,参考该文件的注释就可以了,如果作为程序员,你已经看够了大片的字母,想看看我的汉字+字母,那你可以向下继续了。

简单的翻译下这个注释:可参考http://www.JSON.org/js.html该文件创建了一个包含两个方法的全局对象JSON,它的方法分别是:

代码:
JSON.stringify(value, whitelist)
value    任意的JavaScript值,一般是一个对象或者数组
whitelist    一个可选的数组参数,用于判定对象值如何被串行化
这个方法通过一个JavaScript值来生成JSON文本。在进行串行化时,根据可选的参数whitelist,有三种可能:
如果某个对象有toJSON方法,那么则调用该方法,toJSON方法的返回值将被串行化。
否则,如果可选参数whitelist是一个数组,那么数组中的元素将被用来选择对象进行串行化时的的成员。
否则,如果没有使用whitelist参数,则对象的所有成员将被串行化。
如果值没有JSON的表现形式,例如undefined或者函数,则其不会被串行化。在对象中,这样的值会被忽略,而在数组中将会被null替换。
JSON.stringify(undefined)会返回undefined。日期将会被串行化为被引用的ISO日期。
例:

代码:
var text = JSON.stringify([''e'', {pluribus: ''unum''}]);
//text is ''["e",{"pluribus":"unum"}]''
JSON.parse(text, filter)
该方法解析一个JSON文本,并生成一个组件或者数组,其可能抛出一个SyntaxError异常。
可选的filter参数是一个可过滤和转换结果的函数、它接受每个键和值,它的返回值用来替换源值。如果它返回所接收的值,那么结果不会被改变。如果他返回undefined,则该成员会被删除。
例:

代码:
//解析文本,如果某个键包含字符串“date”,则将其值转换为日期
myData = JSON.parse(text, function (key, value) {
return key.indexOf(''date'') >= 0 ? new Date(value) : value;
});
上面的入门教程已经使你基本了解了json2.js的使用方法,这里关于该文件我就不再赘述了,只是有一个小提示,如果你想简单的解析一个JSON文本,那么可以使用eval()函数,改函数是JavaScript的内置函数,例如解析在JSON.stringify的案例中生成的JSON文本,可以使用:

代码:
var myE = eval(''["e",{"pluribus":"unum"}]'');
来获得对象myE。

在JavaScript中串行化为JSON—使用prototype.js

如果你和我一样,喜欢在自己的项目中使用开源的JavaScript框架,那么你可能可以省去使用json2.js文件了,这里以protype.js为例,该文件可以在http://www.prototypejs.org下载,由于本文不是在讲JavaScript框架,这里我假设你对prototype.js的使用已经有所了解了。
prototype.js中提供了对Object对象的toJSON方法,你可以使用Object.toJSON()方法来实现对对象的串行化,例如:

代码:
var cat=
{
name:"hellokitty",
height:"6 apples"
}
alert(Object.toJSON(cat));
//将弹出对话框,内容为 {"name": "hellokitty", "height": "6 apples"}
另外,在prototype.js中还有另外的JSON支持,主要是在Ajax对象中对Ajax返回请求中JSON内容的解析。这里暂时与我们的内容无关,也不再介绍了。

PHP与JSON

在上面我们一起了解了PHP进行对象串行化的方法以及在JavaScript中进行将对象串行化为JSON的方法,你大致会质疑我为什么将二者放在一起,因为他们的语法实际是不完全一样的,然而,在PHP中,可以对JSON文本进行反串行化,也可以将PHP的对象串行化为JSON而非PHP风格的文本。这主要是靠json_decode和json_encode两个函数来完成的,需要特别说明的是,这两个函数在PHP 5 >= 5.2.0中才被支持,如

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号