JSON对象的解析,JSON.stringify()/JSON.parse()的用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSON对象的解析,JSON.stringify()/JSON.parse()的用法相关的知识,希望对你有一定的参考价值。

ECMAScript 5 对解析 JSON 的行为进行规范,定义了全局对象 JSON 。支持这个对象的浏览器有 IE 8+、Firefox 3.5+、Safari 4+、Chrome

Opera 10.5+。

JSON 对象有两个方法: stringify() 和 parse() 

用法如下:

JSON.stringify()的用法/参数介绍

1、JSON.stringify(jsonObj),jsonObj为JSON数据,该方法是将JSON格式的数据,序列化成字符串类型

var bigWeb= {
name:‘zdw‘,
sex:‘man‘,
birth:‘1989‘
};

var jsonText = JSON.stringify(bigWeb);
console.log(jsonText)
// jsonText 输出:"{"name":"zdw","sex":"man","birth":"1989"}"

2、JSON.stringify(jsonObj,arr),arr可以为自定义要输出的属性如[‘name‘],参考如下代码1,也可以是一个方法如下代码2

代码2:Firefox 3.5 和 3.6 对 JSON.stringify() 的实现有一个 bug,在将函数作为该方法的第二个参数时这个 bug 就会出现,即这个函数只能作为过滤器:返回 undefined 意味着要跳过某个属性,而返回其他任何值都会在结果中包含相应的属性。Firefox 4 修复了这个 bug


//代码1

var bigWeb= {
name:‘zdw‘,
sex:‘man‘,
birth:‘1989‘
};

var jsonText = JSON.stringify(bigWeb,[‘name‘]);
console.log(jsonText)
//jsonText 输出:"{"name":"zdw"}"
//代码2

var bigWeb= {
name:‘zdw‘,
sex:‘man‘,
birth:‘1989‘
};

var jsonText = JSON.stringify(book, function(key, value){
switch(key){
  case "name":
    return value;
  case "sex":
    return 5000;
  case "birth":
    return undefined;//返回undefined则该属性在输出的时候将被过滤
  default:
    return value;
}
});

//输出:"{"name":"zdw","sex":"man","birth":"1989"}"

3、JSON.stringify(jsonObj,arr,num|string) 方法的第三个参数,num(大于10,按10处理)为数值类型用于控制结果中的缩进和空白符,使用如下代码1,如果是自定义字符串string,使用如下代码2


//代码1
var bigWeb= {
name:‘zdw‘,
sex:‘man‘,
birth:‘1989‘
};

var jsonText = JSON.stringify(bigWeb,[‘name‘],4);
//结果自己看下输出看下

  

//代码2

var bigWeb= {
name:‘zdw‘,
sex:‘man‘,
birth:‘1989‘
};

JSON.stringify(bigWeb,null,‘--‘);

//输出如下:

"{
--"name": "zdw",
--"sex": "man",
--"birth": "1989"
}"

JSON.parse()的用法/参数介绍

 1、JSON.parse(jsonText),jsonText为JSON格式的字符串,该方法是将JSON格式的字符串,序列化成JSON数据,与JSON.stringify()作用相反,使用代码如下:

var bigWeb= {
name:‘zdw‘,
sex:‘man‘,
birth:‘1989‘
};

var jsonText = JSON.stringify(bigWeb);
JSON.parse(jsonText)
输出格式如下:{name: "zdw", sex: "man", birth: "1989"}

1、JSON.parse(jsonText,fn),fn该参数是一个函数,将在每个键值对儿上调用,如果还原函数返回 undefined ,则表示要从结果中删除相应的键;如果返回其他值,则将该值插入到结果中,代码如下:

var bigWeb= {
name:‘zdw‘,
sex:‘man‘,
birth:‘1989‘
};

var jsonText = JSON.stringify(bigWeb);
var jsonData = JSON.parse(jsonText,function(key,value){
  if(key == ‘name‘){
    return value;
  }else if(key== ‘birth‘){
    return 1999;
  }else if(key == ‘sex‘){
    return undefined;
  }else{//这个else一定要加。。。否则输出的结果为undefined
    return value;
  }
})

//输出的结果:{name: "zdw", birth: 1999}

 

 

以上是关于JSON对象的解析,JSON.stringify()/JSON.parse()的用法的主要内容,如果未能解决你的问题,请参考以下文章

js解析与序列化json数据(一)json.stringify()的基本用法

JSON.parse()与JSON.stringify()与qs.stringify的区别

JSON.parse()与JSON.stringify()的区别

JSON.parse()与JSON.stringify()的区别

JSON.parse()与JSON.stringify()的区别

JSON.parse()与JSON.stringify()的区别