Javascript学习笔记14 JSON

10人阅读 评论(0) 收藏 举报
分类:

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个参数,则执行相应的格式化
查看评论

Python全栈工程师-第14周

Python全栈工程师
  • 2018年03月15日 19:37

JavaScript数组对象JSON学习笔记

  • 2013年07月30日 14:40
  • 9KB
  • 下载

javascript 学习笔记

  • 2009年04月21日 15:24
  • 40KB
  • 下载

React学习笔记01-2018年3月

计划学习掌握React这个前端,发现网上很多资料介绍都过时了,最新版rReact已是create-react-app@1.5.2 这个版本了。很意外发现github上React的官方介绍里有开发指南r...
  • MauveDragon
  • MauveDragon
  • 2018-03-29 15:46:53
  • 30

JavaScript学习笔记

  • 2011年11月13日 23:10
  • 272KB
  • 下载

台湾大学林轩田机器学习基石课程学习笔记14 -- Regularization

我的CSDN博客地址:红色石头的专栏 我的知乎主页:红色石头 我的微博:RedstoneWill的微博 我的GitHub:RedstoneWill的GitHub 我的微信...
  • red_stone1
  • red_stone1
  • 2017-05-26 12:59:27
  • 1952

[持续更新]JavaScript学习笔记(二)

1.变量作用域 这个是个重点,也是前端考察的要点。 一个变量的作用域(scope):是程序员代码中定义这个变量的区域。 这是JavaScript权威指南第六版中对作用域的定义。简单的来说:一个变量定义...
  • u014267351
  • u014267351
  • 2015-08-12 22:11:55
  • 407

OpenMP Tutorial学习笔记(14)OpenMP Tutorial总结

在学习完OpenMP Tutorial后,对OpenMP就有了一个大概的了解了。 (1)OpenMP主要包括编译器指令、库函数和环境变量。其中,编译器指令是OpenMP的核心。库函数和环境变量主要功...
  • gengshenghong
  • gengshenghong
  • 2011-11-16 14:54:52
  • 829

黑马程序员——JavaScript学习笔记(1)

---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ---------------------- Javascript 的基本...
  • u010741738
  • u010741738
  • 2013-06-13 01:58:11
  • 369

14.Spring学习笔记_泛型依赖注入(by尚硅谷_佟刚)

泛型依赖注入 Spring 4.0 中可以为子类注入子类对应的泛型类型的成员变量的引用...
  • u012234915
  • u012234915
  • 2016-12-01 17:30:48
  • 312
    个人资料
    持之以恒
    等级:
    访问量: 4万+
    积分: 2051
    排名: 2万+
    最新评论