"]} },
? ? ? ? ? ? { name: "广东", citys: { city: ["广州", "深圳", "珠海"]} },
? ? ? ? ? ? { name: "台湾", citys: { city: ["台北", "高雄"]} },
? ? ? ? ? ? { name: "新疆", citys: { city: ["乌鲁木齐"]} }
? ? ? ? ? ? ]
? ? ? ? }
编码的可读性来说,XML有明显的优势,毕竟人类的语言更贴近这样的说明结构。JSON读起来更像一个数据块,读起来就比较费解了。不过,我们读起来费解的语言,恰恰是适合机器阅读,所以通过JSON的索引country.provinces[0].name就能够读取“黑龙江”这个值。
编码的手写难度来说,XML还是舒服一些,好读当然就好写。不过写出来的字符JSON就明显少很多。去掉空白制表以及换行的话,JSON就是密密麻麻的有用数据,而XML却包含很多重复的标记字符。
二、输出json
代码如下:
json_endoce: http://cn.php.net/json_encode
json_dedoce: http://cn.php.net/json_decode
json_encode — 对变量进行 JSON 编码,并返回 value 值的 JSON 形式,例如:
?代码如下:
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
?>
以上代码执行后输出:
?代码如下:
{"a":1,"b":2,"c":3,"d":4,"e":5}
假如要编码的数据源(一般是一个数组),value 中包含中文,经过 json_encode 处理后输出的是 unicode 编码。
?代码如下:
$arr = array ('a'=>'脚本之家');
echo json_encode($arr);
?>
以上代码执行后输出:
?代码如下:
{"a":"\u811a\u672c\u4e4b\u5bb6"}
PHP 底层已经做了 unicode 处理,如果嫌它不够直观,可以利用 urlencode 和 urldecode 方法绕过这个转码为 unicode 的过程:
?代码如下:
$arr = array ('a'=>urlencode('脚本之家'));
echo urldecode(json_encode($arr));
以上代码执行后输出:
?代码如下:
{"a":"脚本之家"}
?
二、输出XML
第一种方法:
?代码如下:
header("Content-type: text/xml");
echo "";
echo "";
echo "";
? echo "";
? ? echo "小小菜鸟";
? echo "";
? echo "";
? ? echo "24";
? echo "";
? echo "";
? ? echo "男";
? echo "";
echo "";
echo "";
? echo "";
? ? echo "艳艳";
? echo "";
? echo "";
? ? echo "23";
? echo "";
? echo "";
? ? echo "女";
? echo "";
echo "";
echo "";
?>
第二种方法:
?代码如下:
header("Content-type: text/xml");
echo "";
echo "小小菜鸟24男艳艳23女";
?>
第三种方法:
?代码如下:
/*
用PHP的DOM控件来创建XML输出
设置输出内容的类型为xml
*/
header('Content-Type: text/xml;');
//创建新的xml文件
$dom = new DOMDocument('1.0', 'utf-8');
//建立元素
$response = $dom->createElement('response');
$dom->appendChild($response);
//建立元素并将其作为的子元素
$books = $dom->createElement('books');
$response->appendChild($books);
//为book创建标题
$title = $dom->createElement('title');
$titleText = $dom->createTextNode('PHP与AJAX');
$title->appendChild($titleText);
//为book创建isbn元素
$isbn = $dom->createElement('isbn');
$isbnText = $dom->createTextNode('1-21258986');
$isbn->appendChild($isbnText);
//创建book元素
$book = $dom->createElement('book');
$book->appendChild($title);
$book->appendChild($isbn);
//将作为子元素
$books->appendChild($book);
//在一字符串变量中建立XML结构
$xmlString = $dom->saveXML();
//输出XML字符串
echo $xmlString;
?>
--------------------------------------分割线 --------------------------------------
--------------------------------------分割线 --------------------------------------