json格式的数据是以{}来定界了同样json数据类型有对象和数组了,下面本文章就举一些例子告诉大家json对象和数组用法与转换方法。
在JSON中,有两种结构:对象和数组。
1. 一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。 名称用引号括起来;值如果是字符串则必须用括号,数值型则不需要
son是一种异常简单易懂的数据格式,关于json的规定,仅仅如下而已:
1) 并列的数据之间用逗号(", ")分隔。
2) 映射用冒号(": ")表示。
3) 并列数据的集合(数组)用方括号("[]")表示。
4) 映射的集合(对象)用大括号("{}")表示。
例如:
代码如下 |
|
{"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"}
|
2. 数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
例如:
代码如下 |
|
var jsonranklist=[{"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"},{"xlid":"zd","xldigitid":123456,"topscore":1500,"topplaytime":"2009-11-20"}];
|
JSON有两种结构数组和对象:数组表示有序数据的集合,而对象表示无序数据的集合。
看下面例子:
代码如下 |
|
$arr = array(111,'aaa','bbb');
$arr1 = array(
'a' => 'aaa',
'b' => 222
);
$arr2 = array(
'a' => 'aaa',
'other' => array(
'bbb',1111
)
);
echo json_encode($arr); //[111,"aaa","bbb"]
echo json_encode($arr1); //{"a":"aaa","b":222}
echo json_encode($arr2); //{"a":"aaa","other":["bbb",1111]}
|
从上看出:由于javascript不支持关联数组,所以json_encode()只将索引数组(indexed array)转为数组格式,而将关联数组(associative array)转为对象格式。
关于PHP对json支持说明:
json_encode只支持UTF-8编码的数据;
json_decode永远只反映一个PHP对象,带上第二个参数true可返回数组:
代码如下 |
|
$json = '{"a":"aaa","other":["bbb",1111]}';
print_r(json_decode($json));
print_r(json_decode($json, true));
|
JSON字符串转换为JSON对象
要使用上面的str1,必须使用下面的方法先转化为JSON对象:
代码如下 |
|
//由JSON字符串转换为JSON对象
var obj = eval('(' + str + ')');(Js自带)
或者
var obj = str.parseJSON(); //由JSON字符串转换为JSON对象
或者
var obj = JSON.parse(str); //由JSON字符串转换为JSON对象
然后,就可以这样读取:
alert(obj.name);
alert(obj.sex);
|
|