JSON.stringify(), JSON.parse(), toJSON()方法使用
发布时间:2020-12-16 19:42:07 所属栏目:百科 来源:网络整理
导读:JSON.stringify()--将value(Object,Array, String, Number...)序列化为JSON字符串 JSON.parse(),将json数据解析为js原生值 toJSON(),作为JSON.stringify()的第二个参数(函数过滤器)补充 * JSON.stringify() @specify : serialization(序列化) @method :
JSON.stringify()--将value(Object,Array, String, Number...)序列化为JSON字符串 JSON.parse(),将json数据解析为js原生值 toJSON(),作为JSON.stringify()的第二个参数(函数过滤器)补充
* JSON.stringify()
@specify : serialization(序列化)
@method : JSON.stringify(value,filter,indent);
@return : JSON字符串
@param : value {type :String|Object|String|Number|Boolean|null} {explain :传入的类型可以是列出的這些}
@param : filter : {type : []|{}} {explain :过滤器可以是个数组,也可以是个函数}
@param : indent : {type : Number | 特殊符号} {explain :如果是数字则代表空白符的个数,最多10个;也可以直接传入缩进的符号}
var gather = {
};
var jsonText = JSON.stringify(gather,null,4);
//第二个参数是数组,只会序列化返回数组里列出的名称
var jsonText1 =JSON.stringify(gather,['id','family'],'=');
var jsonText2 = JSON.stringify(gather,function(key,val){
switch(key){
case 'id':
return 'id is '+val;
case 'family':
return val.join(
'@');
}
},10)
-------------------------------------------------------------------
* toJSON()
* @specify :JSON.stringify()不能满足对某些对象进行自定义序列化的需求,可以通过对象那个上调用toJSON()方法
* @method : date.toJSON()
* @return : 返回任何序列化的值。
*
* JSON.parse(),eval_r() 也可以解析并返回js对象和数组等。但IE8以下浏览器会有安全隐患。
* @specify : 将json字符串解析为原生的javascript值。
* @method : JSON.parse(val,replacer)
* @param : val{type : String} {explain : 需要解析的json字符串}
* @param : replacer {type : function}
{explain :和JSON.stringify()第二个参数类似,接受2个参数,key,val,不过是用来还原json串的函数}
var products = {
name : "leading",
"time" : new Date(2012,03,1),
toJSON : function(){
//只返回name
return this.name;
}
}
var proStr = JSON.stringify(products);
console.log(proStr);
//obj中的relaeseDate对象序列化之后成了有效的json串
var obj = {
title : '对象的标题',
type : 'primitive',
releaseDate : new Date(2012,1)
};
//转化为json串
var o = JSON.stringify(obj);
console.log(o
//在parsedO中还原为一个Date对象(会基于相应的值创建一个新的Date对象,结果parsedO.releaseDate属性中保存了一个Date对象)
var parsedO = JSON.parse(o,function(k,v){
if(k == 'releaseDate'){
return new Date(v);
}else{
return v;
}
});
console.log(parsedO);
//可以调用getFullYear()
console.log(parsedO.releaseDate.getFullYear()); //2012
(4)如果提供了第三个参数,执行相应的格式化操作。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |