Javascript学习笔记14 JSON

JSON是一种数据格式,可以表示以下三种类型的值

  • 简单值:字符串、数值、布尔值和null(不支持undefined)
  • 对象:对象中的键值可以是简单值,也可以是对象等复杂类型值
  • 数组:数组的元素值可以是任意类型
JSON字符串必须使用 双引号
JSON对象中的 属性名,必须加上双引号
JSON中 没有变量,因此对象和数组中不能存在变量

序列化和解析
使用JSON对象的stringify()方法,将JS对象序列化为JSON字符串,该方法接受1个必选参数,即JS对象,以及2个可选参数,过滤器(数组或函数)和缩进的空格数(一个整数值)
使用JSON对象的parse()方法,将JSON字符串解析为JS值,该方法接受1个必选参数,即JSON字符串,以及1个可选参数,即将在每个值对上调用的函数

var book ={
    title:"javascript",
    author:[
        "wjz"
    ],
    edition:3,
    year:2011
};

var jsonText = JSON.stringify(book);  //将对象转化为JSON字符串
// {"title":"javascript","author":["wjz"],"edition":3,"year":2011}
var bookCopy = JSON.parse(jsonText);  //将JSON字符串转化为JS对象
//序列化时过滤结果
var jsonText = JSON.stringify(book,["title","edition"]);  //序列化后的结果将只包含title和edition属性
// {"title":"javascript","edition":3}

var jsonText = JSON.stringify(book,function(key.value){
        switch(key){
            case "author":
                return value.join(",");
            case "year":
                return 2018;
            case "edition":
                return 4;
            default:
                return value;
        }
});

// {"title":"javascript","author":"wjz","edition":4,"year":2018}
//解析JSON字符串时,调用替换函数
var bookCopy = JSON.parse(jsonText,function(key,value){
    if (key == "author"){
        return "zjw";
    }else{
        return value;
    }
});

还可以定义toJSON()方法,返回自定义的JSON数据格式

var book ={
    title:"javascript",
    author:[
        "wjz"
    ],
    edition:3,
    year:2011,
    toJSON:function(){
            return this.title;
        }
};

var jsonText = JSON.stringify(book);
//"javascript"
  • 序列化对象时,顺序:(1)如果存在toJSON对象,则调用该方法,否则返回对象本身。(2)如果提供了函数过滤器,则传入函数过滤器的值是第1步的返回值。(3)如果传入第3个参数,则执行相应的格式化

猜你喜欢

转载自blog.csdn.net/zjw_python/article/details/79956190