window.JSON的JSON转换方法
APIJSON.stringify(value, ?replacer, ?space) - string 将JS对象字符串化。JSON.parse(text, ?reviver) - object 将JSON文本解析为JS对象。参数解析JSON.stringify(value, ?replacer, ?space) - stringvalue JS对象replacer 可为数组,可为...
·
API
JSON.stringify(value, ?replacer, ?space) - string
将JS对象字符串化。
JSON.parse(text, ?reviver) - object
将JSON文本解析为JS对象。
另外:eval(str)
也可以一定程度地将JSON串解析为JS对象。格式:eval('(' + text + ')')
。
要将JSON串解析为JS对象,推荐使用JSON.parse(text, ?reviver)
,准确性及可定制化程度较高。
参数解析
JSON.stringify(value, ?replacer, ?space) - string
value
JS对象
replacer
可为数组,可为方法。
若为数组,如["name", "age"]
,则只对传入对象的对应属性进行字符串化(其他属性自动丢弃)。
若为方法,function(key, value) {...}
,返回value前可以对value做处理,若置value=undefined
,则该name/value对自动丢弃。
space
控制JSON文本串的缩进字符。
可为数值(n个空格)。可为字符串(用字符串缩进)。缩进不会超过10个字符。JSON.parse(text, ?reviver) - object
text
待解析的JSON文本串。
reviver
方法function(key, value) {...}
,可对中间的解析过程做处理|拦截。
demo
// 定义对象object
obj = {"name": "JT", "age": 22, "now": new Date()};
{name: "JT", age: 22, now: Wed Mar 20 2019 15:16:58 GMT+0800 (中国标准时间)}
// 转换为字符串(Date对象会调用toJSON()|toISOString()转换为字符串)
text = JSON.stringify(obj, null, "\t");
"{
"name": "JT",
"age": 22,
"now": "2019-03-20T07:16:58.951Z"
}"
// 或:对传给服务器端的日期字符串格式做处理。
function reviver(key, value) {
// Date类型的对象已经变成string类型。
pattern = /^\d{4}[-\/]\d{2}[-\/]\d{2}($|[ T](\d{2}:){2}\d{2}($|\.\d{3}Z?$))/;
if (pattern.test(value)) {
value = value.substr(0, 10); // 截取字符串前10个字符"yyyy-mm-dd"。
}
return value;
}
text = JSON.stringify(obj, reviver, "\t");
"{
"name": "JT",
"age": 22,
"now": "2019-03-20"
}"
// 从服务器端拿回文本数据,解析为对象(日期信息的字符串需要转换成Date对象)。
result = JSON.parse(
text,
function(key, value) {
// 如果value是字符串,且匹配日期格式(正则匹配),则将value替换为Date对象。
pattern = /^\d{4}[-\/]\d{2}[-\/]\d{2}($|[ T](\d{2}:){2}\d{2}($|\.\d{3}Z?$))/;
if (typeof value == "string" && pattern.test(value)) {
return new Date(value);
} else {
return value; // 不做修改。
}
}
);
{name: "JT", age: 22, now: Wed Mar 20 2019 15:16:58 GMT+0800 (中国标准时间)}
- 打印对象的成员属性和成员方法
默认不会打印成员方法,所以要自定义replacer
方法。
JSON.stringify(obj, function(key, value) {
if (typeof value == "function") {
return value.toString();
}
return value;
}, "\t");
更多推荐
已为社区贡献18条内容
所有评论(0)