JSON函数JSON.stringify和JSON.parse的用法

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,而遍历的原则也是一样的,等这个符合属性遍历完成,那么再完成对这个属性的遍历返回。

猜你喜欢

转载自blog.csdn.net/one_girl/article/details/79360347