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

【common】JavaScript ----- 对象转化为json字符串

2013-06-19 23:41 435 查看
parse用于从一个字符串中解析出json对象

var str = '{"name":"张飞","age":"23"}'

结果:

JSON.parse(str)

Object

age: "23"
name: "张飞"
__proto__: Object

注意:单引号写在{}外,每个属性名都必须用双引号,否则会抛出异常。

stringify()用于从一个对象解析出字符串,如

var a = {a:1,b:2}

结果:

JSON.stringify(a)

"{"a":1,"b":2}"

//字符串转对象

function str2obj(json){

return eval("(" + json + ")");

}

//对象转字符串

function obj2str(o, flag, replace){

var arr_start = "ARRAY_S";

var arr_end = "ARRAY_E";

if (flag == null) {

flag = "\"";//默认是双引号

}

if (replace == null) {

replace = true;

}

var r = [];

if (typeof o == "string" || o == null) {

return o;

}

//alert(typeof(o));

if (typeof o == "object") {

//alert(o.sort);

if (!o.sort) {

//alert("in if");

r[0] = "{";

for (var i in o) {

//alert(i+"="+o[i]);

r[r.length] = flag;

r[r.length] = i;

r[r.length] = flag;

r[r.length] = ":";

r[r.length] = flag;

r[r.length] = obj2str(o[i], flag, false);

r[r.length] = flag;

r[r.length] = ",";

}

r[r.length - 1] = "}";

}

else {//数组元素

r[0] = arr_start;

for (var i = 0; i < o.length; i++) {

r[r.length] = flag;

r[r.length] = obj2str(o[i], flag, false);

r[r.length] = flag;

r[r.length] = ",";

}

r[r.length - 1] = arr_end;

}

var str = r.join("");

//alert("结果:"+str);

//针对{} 就是没有属性的对象,会返回单个 },把它补齐

if (str == "}") {

str = "{}";

}

//针对[] 就是长度为0的数组,会返回单个 ],把它补齐

if (str == arr_end) {

str = arr_start + arr_end;

}

if (replace) {//在递归子循环中不替换,到最后统一替换

//替换掉 "{ }" "[ ]"

var reg = new RegExp(flag + "{", "g"); // 包含字符 "{

str = str.replace(reg, "{");

reg = new RegExp("}" + flag, "g");// 包含字符 }"

str = str.replace(reg, "}");

reg = new RegExp(flag + arr_start, "g"); // 包含字符 "[

str = str.replace(reg, "[");

reg = new RegExp(arr_end + flag, "g"); // 包含字符 ]"

str = str.replace(reg, "]");

//alert(str);

if (str.indexOf(arr_start + "{") > -1) {

reg = new RegExp(arr_start + "{", "g");

str = str.replace(reg, "[{");

}

if (str.indexOf("}" + arr_end) > -1) {

reg = new RegExp("}" + arr_end, "g");

str = str.replace(reg, "}]");

}

}

//alert("--"+str);

return str;

}

return o.toString();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: