JSON

作者: 黄同学2019 | 来源:发表于2018-01-14 18:01 被阅读19次

    JSON

    json_logo-555px.png

    1. 什么是JSON?

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。是一种由道格拉斯·克罗克福特构想设计、轻量级的数据交换语言,以文字为基础,且易于让人阅读。尽管JSON是Javascript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。

    JSON 数据格式与语言无关,脱胎于 JavaScript,但目前很多编程语言都支持 JSON 格式数据的生成和解析。JSON 的官方 MIME 类型是 application/json,文件扩展名是 .json

    2. JSON 的语法

    • 语法详情看这里
    • 注意细节
      • 复合类型的值只能是数组或对象 ,不能是函数、正则表达式对象、日期对象
      • 简单类型的值只有四种 :字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, Infinity, -Infinityundefined)。
      • 字符串必须使用双引号 表示,不能使用单引号。
      • 对象的键名必须放在双引号 里面。
      • 数组或对象最后一个 成员的后面,不能加逗号

    3. JSON和JavaScript的区别

    JavaScript支持 表示方法 JSON支持 表示方法
    null null null null
    array ['a','b'] string ["a","b"]
    Object {name:'frank'} Object {"name":"frank"}
    string 'frank' string "frank"
    number 123 number 123
    boolean true/false boolean true/false
    undefined undefined 不支持 不支持
    Function function fn(){} 不支持 不支持
    变量 var a={} 不支持 不支持
    原型链 object._proto_ 不支持 不支持

    4. JSON 的使用

    • 问题:如下代码为服务端返回给页面的数据,请问 response.write() 里面的内容是对象吗??
    //省略部分代码
    if(path=== '/'){
      response.statuscode = 200
      response.setHeader('content-type','text/json;charset=utf-8')
      response.write(`
      {
        "note":{
          "to":"A",
          "from":"B"
          "heading":"sayHi"
          "content":"hi"
        }
      }
      `)
    }
    //省略部分代码
    

    答:

    不是对象!不是对象!不是对象!上面使用的是JSON的语法构建的JSON对象,但是返回给页面的时候永远是 string ,即http协议的响应的第四部分为 string

    验证方式:在前端页面收到响应以后

    console.log(typeof response.responseText) //string
    
    • 问题:如何把上述从后台获得的符合JSON语法的字符串转换成 js 对象或者是对应的值?
    let string = response.responseText
    let object = window.JSON.parse(string)
    console.log(typeof object) //object
    

    参考资料:

    推荐文章JSON-知乎
    JSON

    JSON-MDN

    JSON-阮一峰

    相关文章

      网友评论

          本文标题:JSON

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