您的位置:首页 > Web前端 > JavaScript

json序列化反序列化插件-json2.js 介绍和使用

2015-09-24 14:57 1006 查看
json2.js主要功能是做什么的?
json2.js提供了json的序列化和反序列化方法,可以将一个json对象转换成json字符串,也可以将一个json字符串转换成一个json对象。
json2.js在浏览器不支持json.parse的内置方法时,最有效。json2.js会创建一个内部的全局变量,提供json对象与字符串之间的转换。
由于eval已经不提倡使用了,并存在一定的危险,建议使用内置parse json的方法,或者直接使用json2.js。
eval在以前一篇中有使用:[Jquery+ashx 实现ajax访问服务端json数据代码示例]
json2.js的源码地址:
https://github.com/douglascrockford/JSON-js
Visual Studio用户可以直接通过Nuget来获得。
使用方法很简单:
1、引用json2.js:
2、调用方法:
3、增强功能:
比如说,我们的数据非常复杂,还有类似头像,昵称,个人签名之类的信息。

可是我保存在本地,只需要用户名,和性别,肿么破呢?

也许你会说 so easy, 遍历数据重新提取下即可。

例如:

文本运行
data = [
{name: , sex:, age: },
{name: , sex:, age: },
{name: , sex:, age: }
]; ( i=, new_data=[]; i<data.length; i++) {
new_data.push({
name: data[i].name,
sex:  data[i].sex
});
} str_json = .stringify(new_data);
console.log(str_json);

var data = [
{name: "王尼玛", sex:1, age: 30},
{name: "王尼美", sex:0, age: 20},
{name: "王大锤", sex:1, age: 30}
];
for (var i=0, new_data=[]; i<data.length; i++) {
new_data.push({
name: data[i].name,
sex:  data[i].sex
});
}
var str_json = JSON.stringify(new_data);
console.log(str_json);


确实分分钟搞定。
其实我们只需要用 stringify 第二个参数即可简单处理这种问题。

文本运行
data = [
{name: , sex:, age: },
{name: , sex:, age: },
{name: , sex:, age: }
]; str_json = .stringify(data, [, ]);
console.log(str_json);

var data = [
{name: "王尼玛", sex:1, age: 30},
{name: "王尼美", sex:0, age: 20},
{name: "王大锤", sex:1, age: 30}
];
var str_json = JSON.stringify(data, ["name", "sex"]);
console.log(str_json);


第二个参数只要传入需要的keys数组,就非常轻松的就完成这种处理了。
当然如果我们要更纠结的处理,比如要把 1,0 修改为男女,那么第二个参数可以用回调函数来处理。

文本运行
data = [
{name: , sex:, age: },
{name: , sex:, age: },
{name: , sex:, age: }
]; str_json = .stringify(data,
(k === ) {         [, ][v];
}     v;
});
console.log(str_json);

var data = [
{name: "王尼玛", sex:1, age: 30},
{name: "王尼美", sex:0, age: 20},
{name: "王大锤", sex:1, age: 30}
];
var str_json = JSON.stringify(data, function (k, v) {
if (k === "sex") {
return ["女", "男"][v];
}
return v;
});
console.log(str_json);


第二个参数如此强悍,为我们省去了不少麻烦。
参考:
/article/9213073.html
/article/4711184.html
https://github.com/douglascrockford/JSON-js
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: