JSON

JSON数据格式理解学习笔记(2)

字号+ 作者:H5之家 来源:H5之家 2017-01-22 09:10 我要评论( )

{comments:[ { id:1, author:someone1, url:, content:hello }, { id:2, author:someone2, url:, content:hello }, { id:3, author:someone3, url:, content:hello } ]}; 很容易发现,许多冗余的信息不见了。由于不

{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对象

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 掌握 Ajax,第 10 部分: 使用 JSON 进行数据传输

    掌握 Ajax,第 10 部分: 使用 JSON 进行数据传输

    2017-01-22 11:03

  • JavaScript学习总结(六)数据类型和JSON格式 码农网

    JavaScript学习总结(六)数据类型和JSON格式 码农网

    2017-01-21 16:06

  • json教程从入门到使用

    json教程从入门到使用

    2017-01-21 12:07

  •  Json学习笔记

    Json学习笔记

    2017-01-19 10:03

网友点评
"