【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();
}
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();
}
相关文章推荐
- javascript中字符串转化为json对象
- javascript 将字符串转化成json对象
- cocos2d JS 在 JavaScript 中,怎样把一个对象转化成 JSON 字符串?
- JavaScript中把Json字符串转化为对象
- JavaScript 将字符串转化为json对象
- 面试题-前端-问答题-javascript中字符串格式json如何转化成json对象
- javascript中字符串格式转化成json对象记录
- JSON.parse()方法,将数据(字符串)转化为javascript对象
- eval函数就是JavaScript用来解释JSON字符串的,把字符串转化为对象、数组、函数或者其它。
- javascript对象转化成json字符串
- javascript中JSON把字符串转化成对象,并对里面的属性增删改查
- javascript中如何将对象转化为json字符串?
- javascript中字符串格式json如何转化成json对象
- javascript中字符串格式json如何转化成json对象
- JavaScript对象,JSON对象,JSON字符串之间的相互转化大全{包含三者的具体介绍和定义}
- JavaScript中JSON字符串和JSON对象相互转化
- 前端js如何生成一个json对象,并转化为json字符串
- json对象和json字符串之间的转化
- json字符串和对象的相互转化
- 把字符串转化为json对象