JSON.stringify详解

122 阅读1分钟

JSON.stringify(value [replacer] [space])

1. value: 是必须要的字段。就是你输入的对象,比如数组。

最常用的用法

var obj = {
  name: "Shelock",
  age: 21
}
var json = JSON.stringify(obj);
console.log(json, typeof json);//{"name":"Shelock","age":21} string
var _obj = JSON.parse(json)
console.log(_obj, typeof _obj);//Object {name: "Shelock", age: 21} "object" 
2. replacer:这个是可选的。它又分为2种方式,一种是方法,第二种是数组。
  1. 方法:
var a = ['name', 'age'];
var b = ['grade', 'class']
var json = JSON.stringify(a,b); 
console.log(json, typeof json);//["name","age"] string
  1. 数组:
  • 如果value是数组,那么如果replacer再是数组就没有意义了,也就是说只会序列还valuereplacer会被忽略。如:
var a = ['name', 'age'];
var b = ['grade', 'class']
var json = JSON.stringify(a,b); 
console.log(json, typeof json);//["name","age"] string
  • 如果value是对象,replacer是数组,则是输出replacer中出现过的值的obj的序列化,如下:
var obj = {
  name: "Shelock",
  age: 21,
  class: 1
};
var b = ['name', 'grade', 'class']
var json = JSON.stringify(obj,b); 
console.log(json, typeof json);//{"name":"Shelock","class":1} string

3. space:可选,用来做分隔符的。

  • 如果省略的话,那么显示出来的值 就没有分隔符。直接输出来,如1中的例子
  • 如果是一个数字的话,那么它就定义缩进几个字符,最大为10。
var obj = {
  name: "Shelock",
  age: 21,
  class: 1
};
var json = JSON.stringify(obj, null, 2); 
console.log(json);//
/*{
  "name": "Shelock",
  "age": 21,
  "class": 1
}*/
  • 如果是一些转义字符,比如“\n”,表示换行,那么它每行后再加一个换行。
var obj = {
  name: "Shelock",
  age: 21,
  class: 1
};
var json = JSON.stringify(obj, null, '\n'); 
console.log(json);//
/*
{
 
"name": "Shelock",
 
"age": 21,
 
"class": 1
}
*/
  • 如果仅仅是字符串,OK,就在每行输出值的时候把这些字符串附加上去就OK。当然,最大长度也是10个字符。
var obj = {
  name: "Shelock",
  age: 21,
  class: 1
};
var json = JSON.stringify(obj, null, 'omg'); 
console.log(json);//
/*
{
omg"name": "Shelock",
omg"age": 21,
omg"class": 1
}
*/