JSON

作者: shandamengcheng | 来源:发表于2020-03-06 17:20 被阅读0次

    只是一种数据格式
    语法的值可以标识为以下三种类型:

    • 简单值 字符串、数值、布尔值、null 不支持undefined
    • 对象
    • 数组

    简单值

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

    对象

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

    与JS对象字面量相比:

    • 没有声明变量(JSON中没有变量的概念)
    • 没有末尾的分号
    • JSON中对象的属性名任何时候都必须加双引号

    数组

    JSON数组采用的就是 JavaScript中的数组字面量形式。

    [25, "hi", true]
    

    解析与序列化

    JSON对象有两个方法:stringify() 和 parse() 分别用来把JS对象序列化为JSON字符串 和 把JSON字符串解析为原生JS的值。

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

    序列化选项

    JSON.stringify( )可接受三个参数。

    1. 要序列化的对象
    2. 过滤器。可以是一个数组,也可以是一个函数
    3. 是否在JSON字符串中保留缩进。

    (1)数组
    如果过滤器参数是数组,那么 JSON.stringify()的结果中将只包含数组中列出的属性
    (2)函数
    两个参数——属性(键)名 和 属性值。
    属性名只能是字符串,而在值并非键 值对儿结构的值时,键名可以是空字符串。
    为了改变序列化对象的结果,函数返回的值就是相应键的值。如果函数返回了undefined,那么相应的属性会被忽略。

    第三个参数用于控制结果中的缩进和空白符。

    • 如果这个参数是一个数 值,那它表示的是每个级别缩进的空格数。
    • 如果缩进参数是一个字符串而非数值,则这个字符串将在 JSON字符串中被用作缩进字符(不再使 用空格)。

    序列化一个对象的顺序:

    • 如果存在toJSON方法且能通过它取得有效的值,则调用该方法。否则,返回对象本身。
    • 如果提供了第二个参数,应用这个函数过滤器。传入函数过滤器的值是第(1)步返回的值。
    • 对第(2)步返回的每个值进行相应的序列化。
    • 如果提供了第三个参数,执行相应的格式化。
     var obj = {
                "title": "Javascript",
                "authors": ["Jona"],
                edition: 3,
                year: 2020,
                toJSON:function() {
                    return {"title":this.title}
                }
            }
      var jsonText = JSON.stringify(obj, function (key, value) {
                switch (key) {
                    case "authors": return value.join(",")
    
                    case "year": return 5000;
    
                    case "title": return "Celia"
                    // case "edition": return;
    
                    default: return value;
                }
            },'....')
      console.log(jsonText);
    
    在这里插入图片描述

    解析选项

    JSON.parse( ) 也可以接收另一个参数,,该参数是一个函数,将在每个键值对儿上调用,又叫还原函数。接收两个参数,一个键和一个值,而且需要返回一 个值。

    相关文章

      网友评论

          本文标题:JSON

          本文链接:https://www.haomeiwen.com/subject/ntewrhtx.html