JSON.parse()与JSON.stringify()

JSON.stringify()【从一个对象中解析出字符串】

语法

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

1.只有一个参数

var data={name: "goatling", age: "18", sex: "女"}
data = JSON.stringify(data)
console.log(data) //{"name":"goatling","age":"18","sex":"女"}
console.log(typeof(data)) //String 字符串

注意

布尔值、数字、字符串的包装对象在序列化过程中会自动转换成对应的原始值

undefined、任意的函数以及 symbol 值,在序列化过程中会被忽略(出现在非数组对象的属性值中时)或者被转换成 null(出现在数组中时)

2.1 有两个参数,参数1是数组,参数2是函数

函数有两个参数,分别是key和value

function replacer(key, value) {
  if (typeof value === "string") {
    return undefined;
  }
  return value;
}

var foo = ["Mozilla", "box", 45, "car", 7];
var jsonString = JSON.stringify(foo, replacer);
console.log(jsonString)//[null,null,45,null,7]

2.2 有两个参数,参数1是对象,参数2是函数

函数有两个参数,分别是key和value

function replacer(key, value) {
  if (typeof value === "string") {
    return undefined;
  }
  return value;
}

var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7};
var jsonString = JSON.stringify(foo, replacer);
console.log(jsonString)//:{"week":45,"month":7}

3.1 有两个参数,参数1是数组,参数2是数组

函数有两个参数,分别是key和value

var foo = ["Mozilla", "box", 45, "car", 7];
var stu=["how","are","u", "box"]
var jsonString = JSON.stringify(foo, stu);
console.log(jsonString) //["Mozilla","box",45,"car",7]
//结果是只有第一个值序列化了,第二个被忽略了。

注意:当参数1是数组,参数2也是数组时,参数2没有用处(这只是我现在的认知水平)

3.2 有两个参数,参数1是对象,参数2是数组

函数有两个参数,分别是key和value

var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7};
var stu=["how","are","u", "model"]
var jsonString = JSON.stringify(foo, stu);
console.log(jsonString) //{"model":"box"}
//参数2就是类似筛子,把在第二个数组里有的给筛选出来。

4. 有三个参数时

第三个参数的作用
  • 如果是一些转义字符,比如“ ”,表示回车,那么它每行一个回车。
  • 如果仅仅是字符串,就在每行输出值的时候把这些字符串附加上去就OK。当然,最大长度也是10个字符
  • 如果是一个数字的话,那么它就定义缩进几个字符,范围是:0到10(数字小于1,则默认为0,大于10,则默认为10)
var foo = { transport: "car", month: 7};
var jsonString1 = JSON.stringify(foo, null, '	')
console.log(jsonString1)

/* 输出结果:
{
    "transport": car,
    "month": 7
}
*/

var jsonString2 = JSON.stringify(foo,null,"test")
console.log(jsonString2)	
{
	test"transport": "car",
	test"month": 7
}

var jsonString3 = JSON.stringify(foo,null,50)
console.log(jsonString3)
{
				"transport": "car",
				"month": 7
}


var jsonString3 = JSON.stringify(foo,null,0)
console.log(jsonString3)
{"transport": "car","month": 7}

JSON.parse()【从一个json格式的字符串中解析出json对象】

从一个json格式的字符串解析出json对象

例子:

var data='{"name":"goatling","age":"18","sex":"女"}'; //定义一个对象字符串
​data = JSON.parse(data) //解析对象​
console.log(data) // {name: "goatling", age: "18", sex: "女"} 一个对象。

var data2='["#undefined","homePage.html","exam/batch.html","exam/exam-login.html"]'; //定义一个数组字符串
data2 =JSON.parse(data2);
console.log(data2)//["#undefined","homePage.html","exam/batch.html","exam/exam-login.html"]
console.log(typeof(data2)) //object

注意
JSON.parse 只能转换json格式的字符串,非json格式的字符串用split转换。

1. '["#undefined","homePage.html","exam/batch.html","exam/exam-login.html"]'//能解析
2. '[#undefined,homePage.html,exam/batch.html,exam/exam-login.html]'//不是json格式,不能解析

这是我第一次写博客,有不足处,请多多指教,谢谢!

原文地址:https://www.cnblogs.com/hyx626/p/9287285.html