zoukankan      html  css  js  c++  java
  • JSON浅谈

    1 什么是JSON?

    JSON:JavaScript Object Notation,JavaScript 对象表示法,它是一种数据格式,可以用来表示JavaScript数据。

    2 为什么需要JSON?如果没有JSON又会怎么样?

    曾经有一段时间,XML 是互联网上传输结构化数据的事实标准。但不少人认为 XML 过于烦琐、冗长。

    于是2006 年,Douglas Crockford 把 JSON作为 IETF RFC 4627 提交给 IETF。

    Crockford认为与 XML 相比,JSON是在 JavaScript中读写结构化数据的更好的方式。因为可以把 JSON 直接传给 eval(),而且不必创建 DOM 对象。

    也就是说,JSON比XML更方便

    3 JSON怎么表示JavaScript中的字符串?

    "Hello world!"

    JavaScript 字符串与 JSON 字符串的最大区别在于,JSON 字符串必须使用双引号(单引号会导致语法错误)。

    4 JSON怎么表示JavaScript中的对象?

    下面是JavaScript的表示:

    var person = {
        name: "Nicholas",
        age: 29
    };

    下面是JSON的表示:

    {
      "name": "Nicholas",
      "age": 29
    }

    与 JavaScript 的对象字面量相比, JSON 对象有两个地方不一样。

    首先,没有声明变量(JSON 中没有变量的概念)。

    其次,没有末尾的分号(因为这不是 JavaScript 语句,所以不需要分号)。

    再说一遍,对象的属性必须加双引号,这在 JSON 中是必需的。

    5 JSON怎么表示JavaScript中的数组?

    下面是 JavaScript 中的表示

    var values = [25, "hi", true];

    下面是 JSON中的表示

    [25, "hi", true]

    6 如何将JavaScript转换成JSON?

    ECMAScript 5 对解析 JSON 的行为进行规范,定义了全局对象 JSON。

    stringify()

    var book = {
        title: "Professional JavaScript",
        edition: 3,
        year: 2011
    };
    var jsonText = JSON.stringify(book);
    console.log(jsonText);

    这个例子使用 JSON.stringify()把一个 JavaScript 对象序列化为一个 JSON 字符串,然后将它保存在变量 jsonText 中。

    7 如何将JSON转换成JavaScript?

    var bookCopy = JSON.parse(jsonText);

    将 JSON 字符串直接传递给 JSON.parse()就可以得到相应的 JavaScript 值。

    注意,虽然 book 与 bookCopy 具有相同的属性,但它们是两个独立的、没有任何关系的对象。

    8 如何过滤结果?比如题6中的例子,我只需要title和year,如何做?

    var jsonText = JSON.stringify(book, ["title", "year"]);

    JSON.stringify()的第二个参数是一个数组,其中包含两个字符串: "title"和"year"。

    这两个属性与将要序列化的对象中的属性是对应的,因此在返回的结果字符串中,就只会包含这两个属性:

    {"title":"Professional JavaScript","year":2011}

    另外,第二个参数也可以是一个过滤函数,如下:

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

    结果是:

    {"title":"Professional JavaScript","year":2017}

    9 stringify()方法有几个参数,各自有什么用途?

    有三个参数,第一个为必填,其余两个为选填,第二个参数为过滤数组或函数,第三个参数控制字符串缩进。

    var jsonText = JSON.stringify(book, null, 4);

    结果为:

    {
        "title": "Professional JavaScript",
        "edition": 3,
        "year": 2011
    }

    注:本文总结选自《JavaScript高级程序设计》第三版。

  • 相关阅读:
    Springboot中使用Scala开发
    aliyun阿里云Maven仓库地址
    css文字滚动
    随笔
    下拉菜单事件
    微信分享
    微信分享功能
    随笔记
    全屏设置
    判定复选框的选中状态
  • 原文地址:https://www.cnblogs.com/lijy/p/6509289.html
Copyright © 2011-2022 走看看