JS基础——JSON

页面导航:首页 > 网络编程 > JavaScript > JS基础——JSON

JS基础——JSON

来源: 作者: 时间:2016-02-03 09:20 【

在普通的 Web 应用中,开发者经常为 XML 的解析伤透了脑筋,无论是服务器端生成或处理 XML,还是客户端用 JavaScript 解析 XML,都常常导致复杂的代码,极低的开发效率。实际上,对于大

在普通的 Web 应用中,开发者经常为 XML 的解析伤透了脑筋,无论是服务器端生成或处理 XML,还是客户端用 JavaScript 解析 XML,都常常导致复杂的代码,极低的开发效率。实际上,对于大多数 Web 应用来说,他们根本不需要复杂的 XML 来传输数据,XML 的扩展性很少具有优势,许多 AJAX 应用甚至直接返回 HTML 片段来构建动态 Web 页面。和返回 XML 并解析它相比,返回 HTML 片段大大降低了系统的复杂性,但同时缺少了一定的灵活性。JSON 为 Web 应用开发者提供了另一种数据交换格式,很好的解决了XML的复杂问题。


1、什么是JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript的一个子集,采用完全独立于语言的文本格式。JSON是一种理想的数据交换语言。易于人和编写,同时也易于机器解析和生成(网络传输速度快)。

举个例子(表示省市JSON写法):

 var country =
        {
            name: "中国",
            provinces: [
            { name: "黑龙江", citys: { city: ["哈尔滨", "大庆"]} },
            { name: "广东", citys: { city: ["广州", "深圳", "珠海"]} },
            { name: "台湾", citys: { city: ["台北", "高雄"]} },
            { name: "新疆", citys: { city: ["乌鲁木齐"]} }
            ]
        }

2、怎么用

\

在序列化 JSON 的过程中, stringify()方法还提供了第二个参数。 第一个参数可以是一个数组, 也可以是一个函数, 用于过滤结果。 第二个参数则表示是否在 JSON字符串中保留缩进。

var box = [{name : 'a',age : 1, height : 177},{name : 'b', age : 2, height : 188}];
var json =JSON.stringify(box, ['name', 'age'], 4);
alert(json);

toJSON()方法,可以将某一组对象里指定返回某个值:

var box = [{name : 'a',age : 1, height : 177, toJSON : function () {
    return this.name;
}},{name : 'b',age : 2,height : 188, toJSON : function () {
    return this.name;
}}];
var json =JSON.stringify(box);
alert(json);

PS:由此可见序列化也有执行顺序,首先先执行 toJSON()方法;如果应用了第二个过滤参数,则执行这个方法;然后执行序列化过程,比如将键值对组成合法的 JSON 字符串,比如加上双引号。如果提供了缩进,再执行缩进操作。

解析 JSON 字符串方法 parse()也可以接受第二个参数,这样可以在还原出 Script 值的时候替换成自己想要的值。

var box ='[{"name" : "a","age" : 1},{"name" :"b","age" : 2}]';
var json =JSON.parse(box, function (key, value) {
if (key == 'name') {
   return 'Mr. ' + value;
} else {
   return value;
}
});
alert(json[0].name);


3、有什么好处

(1)、方便传输,较少冗余的字符。

方便转换。有很多的json api提供了json字符串转对象,对象转换成json串的方法。

易于阅读。json代码又良好的结构,可以很直观地了解存的是什么内容。

(2)、和XML的比较

JSON相对于XML来讲,数据的体积小,传递的速度更快些。

JSON与的交互更加方便,更容易解析处理,更好的数据交互。

JSON的数据传输速度要远远快于XML。


总结:

主观上来看,JSON更为清晰且冗余更少些。从总体来看,XML比较适合于标记文档,而JSON却更适于进行数据交换处理。

在项目中,从WCF传过来的数据要转成JSOn串,当时不知道为什么,只知道为了DataGrid的显示,那时候还是第一次接触JSON。在项目中遇到不懂的还是要多查,弄明白之后再那样做。这样才会进步。



搜索


Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<