zoukankan      html  css  js  c++  java
  • JavaScript基础笔记(十一)JSON

    JSON

    关于JSON,最重要的一点是理解它是一种数据格式,不是编程语言。

    一、语法

    JSON 不支持变量、函数或对象实例,它就是一种表示结构化数据的格式,虽然与 JavaScript 中表示
    数据的某些语法相同,但它并不局限于 JavaScript 的范畴。

    JSON语法可以表示下列三种类型的值:

    一)简单值

    使用与JavaScript相同的语法,可以在JSON中表示字符串、数值、布尔值和null。但没有undefined。

    注意在表示字符串时,只能使用双引号。

    二)对象

    对象作为一种复杂的数据类型,表示的是一组无序的键值对。每个键值对中的值可以是简单值,也可以是复杂数据类型的值。

    //JavaScript对象
    var person = {
        name: "Tom",
        age :19
    };
    //与JS对象相比,JSON对象不同的地方:
    //1.不能声明变量;2.对象的属性必须加双引号;3.没有末尾分号
    {
        "name": "Jerry",
        "age": "8",
        "school": {
            "name": "Nan Shan",
            "location": "xx00"
        }
    }

    三)数组

    数组也是一种复杂数据类型,表示一组有序的值的列表,可以通过数值索引来访问其中
    的值。数组的值也可以是任意类型——简单值、对象或数组。

    //JSON中的数组
    [22, "Hello", "king"]
        [
            {
                "title": "Professional JavaScript",
                "authors": [
                    "Nicholas C. Zakas"
                ],
                edition: 3,
                year: 2011
            },
            {
                "title": "Professional JavaScript",
                "authors": [
                    "Nicholas C. Zakas"
                ],
                edition: 2,
                year: 2009
            },
            {
                "title": "Professional Ajax",
                "authors": [
                    "Nicholas C. Zakas",
                    "Jeremy McPeak",
                    "Joe Fawcett"
                ],
                edition: 2,
                year: 2008
            }
        ]

    二、解析与序列化

    可以把JSON数据结构解析为JavaScript对象。

    一)JSON对象

    早期浏览器使用eval()函数把JSON解析为JavaScript对象和数组。但使用eval()函数对JSON数据进行转换存在一定风险,

    因为可能会执行一些恶意代码。所以,建议使用全局对象JSON。

    JSON对象的两个方法:

    1)JSON.stringify():把JavaScript对象序列化为JSON字符串。

    2)JSON.parse与上面相反。

        var book = {
            title: "JavaScript for xx",
            authors: ['Price', 'Tom', "Alex"],
            edition: 9,
            year: 2200
        };
        var jsonText = JSON.stringify(book);
        console.log(jsonText);
        //{"title":"JavaScript for xx",
        // "authors":["Price","Tom","Alex"],"edition":9,"year":2200}
        var bookInfo = JSON.parse(jsonText);
        console.log(bookInfo.authors);

    在序列化 JavaScript 对象时,所有函数及原型成员都会被有意忽略,不体现在结果中。此外,值为
    undefined 的任何属性也都会被跳过。

    3)toJSON()

        var book = {
            title: "JavaScript for xx",
            authors: ['Price', 'Tom', "Alex"],
            edition: 9,
            year: 2200,
            toJSON: function () {
                return this.title;
            }
        };
        var jsonText = JSON.stringify(book);
        console.log(jsonText); //"JavaScript for xx"
    Simple is important!
  • 相关阅读:
    JAVA设计模式之桥接模式
    Pycharm新建模板默认添加作者时间等信息
    Handler机制(2)转载
    内部类学习
    设计模式-1依赖倒置原则示例
    正则表达式
    Service原理及例子
    Serializable接口
    设计模式之静态工厂模式
    Handler机制post方法使用
  • 原文地址:https://www.cnblogs.com/Shadowplay/p/8547004.html
Copyright © 2011-2022 走看看