zoukankan      html  css  js  c++  java
  • JavaScript(8)——JSON

    JSON

      啊呀呀,终于写到了JSON了。莫名的开心,虽然还是被说进度慢,不过,我不管,我就是开心。恩,好好学习,好好加油。(这是一段毫无逻辑的话,我也不知道说啥了)

    JSON是JavaScript的一个严格的子集,利用JavaScript中的一些模式来表示结构化数据。它是一种数据格式,而不是一种编程语言。  

    【语法】

    JSON的语法支持简单值、对象和数组三种类型的值。不支持变量、函数或对象实例。与JavaScript中表示数据的某些语法相同,但是并不局限于JavaScript范畴。

    简单值

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

    JavaScript字符串与JSON字符串的最大区别在于,JSON字符串必须使用双引号。

    对象

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

    与JavaScript的对象字面量相比,JSON对象一没有声明变量(JSON中设有变量的概念),二是没有末尾的分号。属性的值可以是简单值有,也可以是复杂类型值。

    数组

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

    JSON数组采用的就是JavaScript中的数组字面量形式。JSON数组也没有变量和分号。把数组和对象结合起来,可以构成更复杂的数据集合。

    对象和数组通常是JSON数据结构的最外层形式,利用他们能够创造出各种各样的数据结构。

    【解析与序列化】

    JSON拥有与JavaScript类似的语法,也可以把JSON数据结构解析为有用的JavaScript对象。

    JSON对象有stringify()和parse()两种方法。在最简单的情况下,这两种方法分别用于把JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生JavaScript值。如下

    var book={
                    title:"professional JavaScript",
                    authors:[
                        "Nicholas C. Zakas"
                        ],
                        edition:3,
                        year:2011
                       };
    var jaonText=JSON.stringify(book);

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

    【序列化选项】

    JSON.stringify()可以接收两个参数,一个参数是个 过滤器,可以是一个数组,也可以是一个函数。第二个参数是一个选项,表示是否在JSON字符串中保留缩进。这两个参数用于指定以不同方式序列化JavaScript对象。

    过滤结果

    如果过滤参数是数组,那么JSON.stringify()的结果中将只包含数组中列出的属性。

    为了改变序列化对象的结果,函数返回的值就是相应键的值。如果函数返回了undefined,那么相应的属性会被忽略。

    要序列化的对象中的每一个对象都要经过过滤器。

    字符串缩进

    JSON.stringify()的方法的第三个参数用于控制结果中的缩进和空白符。如果这个参数是一个数值,那它表示的是每个级别缩进的空格数。如果缩进参数是一个字符串而非数值,则这个字符串将在JSON字符串中被用作缩进字符(不再使用空格)。缩进字符串最长不能超过10个字符长。

    toJSON()方法

    假设把一个对象传入JSON.stringify(),序列化该对象的顺序如下

    (1)如果存在toJSON()方法而且能通过他取得有效的值,则调用该方法,否则,返回对象本身。

    (2)如果提供了第二个参数,应用这个函数过滤器。传入函数的过滤器的值是第(1)步返回的值。

    (3)对第(2)步返回的值进行相应的序列化。

    (4)如果提供了第三个参数,执行相应的格式。

    【解析选项】

    JSON.parse()方法也可以接收另一个参数,该参数是一个函数(还原函数),将在每个键值对儿上调用。如果还原函数返回undefined,则表示要从结果中删除相应的键。如果返回其他值,则将该值插入到结果中。

  • 相关阅读:
    并发容器梳理
    CAS总结
    原子类总结and-Git提交出现error: src refspec master does not match any的问题
    简单工厂模式小结
    JVM学习与问题总结——java内存区域与内存溢出异常
    反射机制学习记录
    观察者模式
    IDEA的一些常用设置
    建造者模式
    【[AH2017/HNOI2017]礼物】
  • 原文地址:https://www.cnblogs.com/wlfsmile/p/5889649.html
Copyright © 2011-2022 走看看