热烈祝贺台州朗动科技的站长论坛隆重上线!(2012-05-28)    热烈庆祝伟大的祖国60周年生日 点击进来我们一起为她祝福吧(2009-09-26)    站长论坛禁止发布广告,一经发现立即删除。谢谢各位合作!.(2009-08-08)    热烈祝贺台州网址导航全面升级,全新版本上线!希望各位一如既往地支持台州网址导航的发展.(2009-03-28)    台州站长论坛恭祝各位新年快乐,牛年行大运!(2009-01-24)    台州Link正式更名为台州网址导航,专业做以台州网址为主的网址导航!(2008-05-23)    热烈祝贺台州Link资讯改名为中国站长资讯!希望在以后日子里得到大家的大力支持和帮助!(2008-04-10)    热烈祝贺台州Link论坛改名为台州站长论坛!希望大家继续支持和鼓励!(2008-04-10)    台州站长论坛原[社会琐碎]版块更名为[生活百科]版块!(2007-09-05)    特此通知:新台州站长论坛的数据信息全部升级成功!">特此通知:新台州站长论坛的数据信息全部升级成功!(2007-09-01)    台州站长论坛对未通过验证的会员进行合理的清除,请您谅解(2007-08-30)    台州网址导航|上网导航诚邀世界各地的网站友情链接和友谊联盟,共同引领网站导航、前进!(2007-08-30)    禁止发广告之类的帖,已发现立即删除!(2007-08-30)    希望各位上传与下载有用资源和最新信息(2007-08-30)    热烈祝贺台州站长论坛全面升级成功,全新上线!(2007-08-30)    
便民网址导航,轻松网上冲浪。
台州维博网络专业开发网站门户平台系统
您当前的位置: 首页 » PHP/Perl编程 » 谈PHP与JSON

谈PHP与JSON

论坛链接
  • 谈PHP与JSON
  • 发布时间:2009-07-25 23:13:13    浏览数:6343    发布者:superadmin    设置字体【   
:某些东西不写写,一段时间就会遗忘。所以,总好写下来。

PHP近年来的发展给web编程界带来更多的活力和惊喜,它使得web中某些特殊功能的实现变得如此简单,以至于我总怀疑:真的是这样吗 ?

随着web2.0的发展和成熟,ajax的运用越来越广泛。Ajax配合xml通信的技术恐怕是everybody know,但是实际上很多时候我们没有必要使用xml如此强大的功能,而是使用一个小巧精悍的“玩意”JSON(参见http://www.json.org/json-zh.html)。JSON在极大的方便了web程序员的同时也减少了客户度按与服务端的通信量,提高了用户体验。。。。。。总之好处多多。

最新的PHP(PHP 5 >= 5.2.0, PECL json:1.2.0-1.2.1,http://www.php.net/manual/zh/ref.json.php) 已经支持JSON。我们可以看到有两个函数json_decode json_encode ,一般的我们只需要使用json_encode来生成即可。

例:

[codes=php] <?php

print json_encode(array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5));

?>

[/codes]

输出

[codes=php]

{"a":1,"b":2,"c":3,"d":4,"e":5}

[/codes]

由于json是javascript内置支持的,所以不需要任何扩展我们即可访问该结构。

[codes=js]

var myjson = {"a":1,"b":2,"c":3,"d":4,"e":5};

[/codes]

那么 myjsom.a 的值就为1.

来个复杂一点的

[codes=js]

var myjson = {“news”:[{“title”:”new1”, “content”:”first news”},{“title”:”new2”, “content”:”second news”}]};[/codes]

假设上面的结构描述的是两条新闻,那么我们就可以使用DOM遍历来将新闻插入到网页中,而不需要为指定的xml格式文档编写特定的代码,既增加了程序的效率,也提高了代码的可移植性(服务端)。

[codes=js]

for(i=0; i= myjson.news.length; i++)

{

alert(myjson.news.title);

}

[/codes]

在实际与服务器交互的过程中,当然还要注意如果只有一条记录,那么是无法遍历的,所以还需要判断返回的是否是数组形式(多条记录),这里我显式的转化返回对象为JSON对象。

[codes=js]

var myObject = eval('(' + response + ')');

html = '

';

//判断是否数组

if (myObject.constructor == window.Array)

{

for(i=0; i {

html += '

' + myObject.node.cname + ' ';

}

}

else

{

html += '

' + myObject.node.cname + ' ';

}

html += '


';

$('#'+id).append(html);

[/codes]

当然由于众多空间提供商的php版本没有跟上,所以很多朋友不能使用该方法来实现json代码的生成。这里有一篇文章http://gggeek.altervista.org/sw/article_20061113.html,对现有几种JSON扩展给出了比较综合的评价,大家可以参考一下。
娱乐休闲专区A 影视预告B 音乐咖啡C 英语阶梯D 生活百科
网页编程专区E AMPZF HTMLG CSSH JSI ASPJ PHPK JSPL MySQLM AJAX
Linux技术区 N 系统管理O 服务器架设P 网络/硬件Q 编程序开发R 内核/嵌入
管理中心专区S 发布网址T 版主议事U 事务处理