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

JavaScript将对象转换为JSON

2012-10-16 21:43 375 查看
今天开始自己的第一篇博文,谈谈在JavaScript中如何将自定义类型转换为JSON对象。

那么首先要谈谈for与for in的用法。对于遍历来说,大家都不陌生尤其对于数据结构精通的人来说。本文并不是要在这里提出更好的遍历方法,而只是做出说明。在此后面我们通过遍历来进行对象转为JSON对象。

在Java中有很多中方式,如for, foreach,以及一些接口的next()方法来进行遍历,但是在JavaScript中我们如何去遍历呢?

对于在数组中,我们通常这样去遍历:

var arr = {"a", "b", "c"};
for(var i = 0; i< arr.length; i += 1){
alert(arr[i]);
}

同样假如数组中的内容为我们自己定义的对象时,我们也可以通过这种方式来得到数组中的对象。但是对于一个对象而言我们要去对他内容部进行遍历,我们如何操作呢?

这时候for in就派上用场了。我们可以这样进行对一个自定义的对象进行如下遍历。

// 创建一个简单的对象
var Person = function(name, age){
this.name = name;
this.age = age;
}

// 转换为json字符串
function toJson(source){
var json = [];
for(var key in source){
json.push([key, ":", source[key]].join(" "));
}
return "{" + json.join(", ") + "}";
}

相信在看到这里大家似乎也应该明白for in的作用了吧。其实也就是for in去遍历对象的属性,然后由于对象可以通过属性名称去获取到具体的值。

对象转换为JSON字符串代码如下(用这种最清楚的函数式而非面向对象方式):

// 传入对象,生成对象json
function toJSON(source){
var json = [];
var jsonStr = "";
if(source instanceof Array){
jsonStrArray = [];
for(var i =0; i < source.length; i +=1){
jsonStrArray.push([toJsonString(source[i])].join(""));
}
jsonStr ="["+jsonStrArray.join(", ")+"]";
} else {
jsonStr = toJsonString(source);
}
return jsonStr;
}

// 将对象转换为json字符串
function toJsonString(obj){
var msg = [];
for(var key in obj){
msg.push([key, ":", obj[key]].join(" "));
}
return "{" + msg.join(", ") + "}";
}

// 对象
function Person(name, age){
this.name = name;
this.age = age;
}

// 传递数组对象
var persons = [];
persons.push(new Person("Young", 23));
persons.push(new Person("Gump", 23));
alert(toJSON(persons));

// 传递普通对象
alert(toJSON(new Person("Yong", 22)));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息