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[i].title);

}

[/codes]

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

[codes=js]

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

html = '

    ';

    //判断是否数组

    if (myObject.constructor == window.Array)

    {

       for(i=0; i   {

         html += '

  • ' + myObject.node[i].cname + ' ';

       }

    }

    else

    {

       html += '

  • ' + myObject.node.cname + ' ';

    }

    html += '

';

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

[/codes]

当然由于众多空间提供商的php版本没有跟上,所以很多朋友不能使用该方法来实现json代码的生成。这里有一篇文章http://gggeek.altervista.org/sw/article_20061113.html,对现有几种JSON扩展给出了比较综合的评价,大家可以参考一下。

你可能感兴趣的:(PHP与json)