处理JSON数据
这一段时间,学习网页制作时,也尝试Google和新浪等网站的API,两者都是REST(
Representational State Transfer)的软件架构,通过HTTP传递指令参数并获取数据。数据一般有两种格式,XML和JSON。XML文件较大,就试了下JSON这种短小精悍的数据结构。
JSON代表JavaScript 对象表示法(JavaScript Object Notation)。参看w3cschool的教程。
一个典型的JSON结构如下所示(来自维基百科)
{
"firstName": "John",
"lastName": "Smith",
"male": true,
"age": 25,
"address":
{
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021"
},
"phoneNumber":
[
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "fax",
"number": "646 555-4567"
}
]
}{ } 代表一个对象。
name:value 表示一个数据项,可以为数字(例如0)、字符串(用双引号包含,如“风中飞舞”)、布尔值(true 或者 false)。不同数据项用逗号分隔。
[ ] 表示数组。
处理JSON数据
JavaScript
JavaScript中可以直接使用JSON对象。例如在firebug控制台中:
obj = { “name”:”myobj”,”type”:”json”}
Object { name=“myobj”, type=“json”}
JSON最常用的使用方法是将JSON文本(字符串)解析成JavaScript对象。JavaScript的eval函数实现这样的功能。
jQuery库
jQuery.parseJSON() 函数可以将JSON字符串解析成JavaScript对象。
jQuery还可以通过Ajax技术,使用 jQuery.getJSON() 获取JSON文件。该函数还可以通过JSONP技术,设置callback函数,解决Ajax限制跨域传输的问题,实现跨域抓取JSON文件。
很多函数需要数组型参数,但parseJSON方法得到的是对象,需要将javascript对象转换成javascript数组。jQuery.makeArray()函数可以将数组形式的对象转换成数组(数组形势的对象应该是指没有成员方法的对象)。
PHP
PHP可以实现数组或对象与JSON格式数据字符串之间的转换。
json_encode()
将数组或对象编码成JSON字符串。
json_decode()
将JSON字符串解析成数组或对象。
用var_dump()输出的数组显示如下
array(2) {
["shorturl"]=>
string(17) "//dwz.cn/yes"
["longurl"]=>
string(20) "//www.baidu.com"
}编码后,得到
{"shorturl":"http:\/\/dwz.cn\/yes","longurl":"http:\/\/www.baidu.com"}反之亦然。
