JSON的概念:
JSON是一种格式,基于文本,优于轻量,用于交换数据
第一个函数JSON.stringify
能帮你把不符合JSON格式的JS对象处理成符合JSON格式的字符串
JSON.stringify(value[, replacer [, space]])
语法:
value:必选字段。就是你输入的对象,比如数组、类等。
JSON.stringify({‘name’:’Good Man’,’age’:22}) 返回 ‘{‘name’:’Good Man’,’age’:22}’
var obj = {
'name':'Jenny',
'age':22
}
console.log(JSON.stringify(obj)) //'{"name":"Jenny","age":22}'
replacer:可选参数。
可以是函数(在序列化过程中每个属性都会被这个函数转化和处理)
var obj = {
'name':'Jenny',
'age':22,
'tel': '18363972300',
'address': 'China'
}
var objString = JSON.stringify(obj, function (key, value){
if (key === 'tel'){
return '+86'+value
} else {
return value
}
})
console.log(objString) //'{"name":"Jenny","age":22,"tel":"+8618363972300","address":"China"}'
也可以是数组(只有包含在这个数组中的属性才会被序列化到最终的JSN字符串中,并且会按着数组中属性的顺序序列化)
var obj = {
'name':'Jenny',
'age':22,
'tel': '18363972300',
'address': 'China'
}
var objArr = ['name','tel','age']
var objString = JSON.stringify(obj, objArr)
console.log(objString) //'{"name":"Jenny","tel":"18363972300","age":22}'
如果第二个参数可以是null,和空着一样的效果。
space:用什么来做分隔符。不常用。
第二个函数JSON.parse
将JSON字符串解析为JS数据结构,它很严格,你的JSON字符串不是合法的字符串的话,是没办法解析的。最好先调用本身的JSON字符串相关序列化函数,再将字符串解析为js数据结构
JSON.parse(text[, reviver])
text:要解析的字符串
reviver:可选,必须是一个函数,作用是在函数已经被解析但是还没返回前,将属性处理后再返回。
var obj = {
'name':'Jenny',
'age':22,
'tel': '18363972300',
'address': 'China'
}
var objString = JSON.stringify(obj)
JSON.parse(objString,function(key,value){
console.log(key)
console.log(value)
console.log('------')
})
/*
name
Jenny
------
age
22
------
tel
18363972300
------
address
China
------
{}
------
*/
由这些输出可以看出这是一个由内而外深度优先的遍历。
遍历的时候从头到尾遍历,如果是简单属性值(数值,字符串,布尔值和null),那么直接遍历完成,如果遇到属性值是对象或者数组形式的,那么暂停,先遍历这个子JSON,而遍历的原则也是一样的,等这个符合属性遍历完成,那么再完成对这个属性的遍历返回。