目录
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格式,不能解析
这是我第一次写博客,有不足处,请多多指教,谢谢!