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!
  • 相关阅读:
    Longest Palindromic Substring
    PayPal MLSE job description
    Continuous Median
    Remove Duplicates From Linked List
    Valid IP Address
    Longest substring without duplication
    Largest range
    Subarray sort
    Multi String Search
    Suffix Trie Construction
  • 原文地址:https://www.cnblogs.com/Shadowplay/p/8547004.html
Copyright © 2011-2022 走看看