`
kstgjfk403
  • 浏览: 28787 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ECMASript5 JSON对象和JS对象转换

阅读更多

JSON 格式数据经过解析之后,可以直接当成 ECMAScript 中的对象来使用。在使用 JSON 格式时的一个重要问题是如何在 ECMAScript 中的对象与文本形式之间进行互相转换。从服务器端通过 HTTP 协议获取的 JSON 文本需要经过解析之后,才能在 ECMAScript 代码中来使用;当需要向服务器端发送数据时,需要先把 ECMAScript 中的对象转换成文本格式。在 ECMAScript 规范第三版中并没有对 JSON 格式数据的转换进行规范,大多数程序都依靠 JavaScript 框架来提供相关的支持。

ECMAScript 规范第五版提供了2个处理JSON对象和js对象相互转换的方法:
JSON.parse(): 将JSON 文本转换成相应的对象。
例如:
var jsonStr = '{"a":1, "b":2, "c":3}';
JSON.parse(jsonStr); //不使用第二个参数:返回一个对象

JSON.parse(jsonStr, function(key, value) {
    return typeof value === 'number' ? value * 2 : value;
}); //函数做为第二个参数,可以有过滤效果。 结果为 {a:2, b:4, c:6}

 JSON.parse(jsonStr, function(key, value) {
    return typeof value === 'number' && value % 2 === 0 ? undefined : value;
 }); //过滤结果为undefined的不会出现在结果中。 结果为 {a:1, b:3}

 JSON.stringify(a,b,c):将 ECMAScript 中的对象转换成 JSON 文本:
 a: 待转换的对象,
 b: 可以为数组或函数
 c: 控制结果中行的缩进,一般为小于10的值
例如:
var user = {
    name : 'Alex',
    password : 'password',
    email : 'alex@example.org'
 };

 JSON.stringify(user); //转换为对象
 JSON.stringify(user, ['name','password']); //只获取数组中出现属性, 输出结果为“{"name":"Alex","password" : "password"}”
 JSON.stringify(user, function(key, value) {
    if (key === 'email') {
        return '******';
    }
    if (key === 'password') {
        return undefined;
    }
    return value;
 });  //undefined不会出现在结果中, 输出结果为“{"name":"Alex","email":"******"}”
 JSON.stringify(user, null, 4); //结果缩进4个空格

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics