PHP和json简介
我在日志里曾经介绍过如何使用jQuery解析JSON格式的feed。今天准备简单介绍如何使用PHP输出JSON格式的Feed以及如何使用PHP解析JSON格式的Feed。JSON是一种轻便的数据交换格式,和XML的用途显示,但是相比之下XML要臃肿许多。至于XML和JSON那个更有优势,我也说不上,但是听说JSON的处理速度要比XML快,似乎挺有道理。JSON是全称是Javascript Object Notation(Javascript对象标记法),它的结构不如XML直观,特别对初学者来说,下面就是一个最基本、最简单的JSON feed的例子,你可以看到一个对象是有一组无序的对数组成,并用大括号括起来;而对数十用逗号分隔;而对数的名称和值用冒号分隔。
{name:adam,date:2009-07-22,title:PHP and JSON}//最基本的JSON Feed
通常JSON Feed的结构往往不是这么简单,因为他的值得类型很多,可以是string、number、object、array、true、false、null等等,如果你的值里含有控制符号(大括号,冒号,中括号等等),你还要使用转义符。在这里我不准备做详细介绍,你可以参考http://json.org。
PHP5.2后PHP自带有JSON的encoder和decoder,PHP5.2以前的版本你可以使用ZEND的JSON库。
使用PHP的JSON encoder,你可以把相关数组转换成JSON格式,下面是一个例子:
<?php$today = date("D M j G:i:s T Y");$status = array("text" => "大家好!"."最近一直都很忙,但是我会尽量经常更新我的日志;" ."把学到的东西记录下来、分享给大家","created_at" => "$today");$name = array("name" => "adam");$status['user'] = $name;$myJSONstatus = json_encode($status);echo $myJSONstatus;?>//输出结果:{"text":"\u5927\u5bb6\u597d\uff01\u6700\u8fd1\u4e00\u76f4\u90fd\u5f88\u5fd9\uff0c\u4f46\u662f\u6211\u4f1a\u5c3d\u91cf\u7ecf\u5e38\u66f4\u65b0\u6211\u7684\u65e5\u5fd7;\u628a\u5b66\u5230\u7684\u4e1c\u897f\u8bb0\u5f55\u4e0b\u6765\u3001\u5206\u4eab\u7ed9\u5927\u5bb6","created_at":"Wed Jul 22 22:33:44 EDT 2009","user":{"name":"adam"}}
注意:以上的输出里有很多4位的十六进制代码,这是因为json_encode把中文都转换为对应的十六进制代码。
和encoder对应,我们还可以使用json decoder把JSON feed转换成object或者array。例如:
<?php$url = 'http://feeds.delicious.com/v2/json/tags/61dh?count=100';$jsonfeed = file_get_contents($url);echo $jsonfeed;$result = json_decode($jsonfeed, true);//把第二个变量是控制输出类型的,true为Array,默认(false)为Objectprint_r ($result);?>输出结果:Array([ajax] => 8[CSS] => 19[HTML] => 16[Javascript] => 37[jQuery] => 37[jQuery基础] => 11[Linux] => 5[mySQL] => 3[Perl] => 5[PHP] => 25[PHP实用代码系列] => 4[Smarty] => 2[博客] => 21[浏览器] => 10[百度知道] => 4[素材] => 2[编程开发] => 7)
http://feeds.delicious.com/v2/json/tags/61dh?count=10 这个链接是美味书签提供的,经常光临我的日志的朋友,可能知道,我没发布一篇文章都会把链接加到美味书签,然后使用它产生本站的日志分类。使用json-decode, 我就可以从json feed里把日志分类和文章数解析出来。
如果你用的5.2以前的版本,你可以使用Zend的Json库,一般PHP服务器带有Zend。使用方法如下:
<?phprequire_once 'Zend/Json.php';//encode例子:$today = date("D M j G:i:s T Y");$status = array("text" => "大家好!"."最近一直都很忙,但是我会尽量经常更新我的日志;" ."把学到的东西记录下来、分享给大家","created_at" => "$today");$name = array("name" => "adam");$status['user'] = $name;echo Zend_Json::encode($status);//decode例子:$url = 'http://feeds.delicious.com/v2/json/tags/61dh?count=100';$jsonfeed = file_get_contents($url);echo Zend_Json::decode($jsonfeed);?>
标签: PHP



0 条评论:
发表评论
指向此帖子的链接:
创建链接