站长论坛

标题: 谈PHP与JSON [打印本页]

作者: superadmin    时间: 2009-7-25 23:13
标题: 谈PHP与JSON
:某些东西不写写,一段时间就会遗忘。所以,总好写下来。

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扩展给出了比较综合的评价,大家可以参考一下。




欢迎光临 站长论坛 (http://www.tzlink.com/bbs/) Powered by Discuz! X3.2