{comments:[
{
id:1,
author:"someone1",
url:"",
content:"hello"
},
{
id:2,
author:"someone2",
url:"",
content:"hello"
},
{
id:3,
author:"someone3",
url:"",
content:"hello"
}
]};
很容易发现,许多冗余的信息不见了。由于不需要有与开始标签(opening tag)匹配的结束标签(closing tag),因此传送相同的信息所需的字节数大大降低了。创始人 Corockford 将其称之为“XML 的减肥方案”)。
SON 格式的数据与 XML 相比,缺点是对于外行人可读性更差。当然,有一种观点是,数据交换格式不是用肉眼观察的。如果是通过工具对来回传送的数据进行创建和解析,那么的确没有理 由要求数据必须使人们易于阅读。问题的实质在于:存在可用的 JSON 工具。
JSON 优势与缺点
JSON不仅减少了解析XML解析带来的性能问题和兼容性问题,而且对于javascript来说非常容易使用,可以方便的通过遍历数组以及访问对象属性 来获取数据,其可读性也不错,基本具备了结构化数据的性质。不得不说是一个很好的办法,而且事实上google maps就没有采用XML传递数据,而是采用了JSON方案。
JSON 另外一个优势是跨域可行性,例如你在的 网页里使用是完全可行的,这就意味着你可以跨域传递信息。而使用XMLHttpRequest却获取不了跨域的信息,这是javascript内部的安全 性质所限制的。
JSON看上去很美,是不是就能完全取代XML呢?事实并非如此,而原因就在于XML的优势:通用性。要使服务器端产生语法合格的javascript代 码并不是很容易做到的,这主要发生在比较庞大的系统,服务器端和客户端有不同的开发人员。它们必须协商对象的格式,这很容易造成错误。
json数据格式实例
例1
代码如下 复制代码
//json实例
var str=’{"firstName": "Bret", "lastName":"McLaughlin"}’;
var j= eval(’(’ + str +’)’);
//for(var key in j){ alert(j[key]); } //遍历读名
//for(var key in j){ alert(j[key]); }//遍历读值
//alert(j.firstName); //读指定名的值
var data=’[{k:"名称1",v:"共10条"},{k:"名称2",v:""}]’;
var json=eval(’(’+data+’)’);//转换为json对象
//alert(json.length);//输出root的子对象数量
//if (json[1].v.length>1){alert(dataObj[1].v);}
//alert(json[1].k); //读指定名的值
//for(i=0;i<json.length;i++) {alert(json.v)}//遍历
//for(var key in json){ alert(json[key].v); }//遍历
//var arr = new Array();
//for(var key in json){arr.push(json[key].k); }//拼接
//alert(arr.join(’&’));
例2
代码如下 复制代码
<script type="text/javascript" src="json2.js"></script>
<script>
//直接声明json数据结构
var myJSONObject = {"bindings": [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
]
};
//声明字符串,可对比一下json文本与我们正常文本的区别
var normalstring='[{persons:[{name:"jordan",sex:"m",age:"40"}, {name:"bryant",sex:"m",age:"28"}, {name:"McGrady",sex:"m",age:"27"} ]}]';
var jsontext='[{"persons":[{"name":"jordan","sex":"m","age":"40"}, {"name":"bryant","sex":"m","age":"28"}, {"name":"McGrady","sex":"m","age":"27"} ]}]';
//调用eval函数转换为json对象,
var myE = eval(normalstring);
document.writeln(myE+'<br><br>');
//将json对象转换为字符串
var text = JSON.stringify(myE);
//对比转换后的json文本与声明的文本区别
document.writeln('转换后的json文本:'+text+'<br><br>声明的json格式文本 '+jsontext+'<br><br>声明的普通格式文本 '+normalstring+'<br><br>');
//当安全比较重要的时候使用JSON解析就好一些。JSON解析只会识别JSON文本并且它更安全,下面调用json的parse函数对文本数据转换生成json数据结构
var myData = JSON.parse(jsontext);
document.writeln(myData+'<br><br>');
//下面是对json对象的增删查改操作
//声明json对象