什么是JSON、JSON.parse、JSON.stringify

2,155 阅读2分钟

JSON全称(JavaScript Object Notation),通常称之为JS对象标记语言。是一种轻量级的数据交换格式。

JSON不是编程语言而是标记语言,跟HTML、XML、Markdown一样,用来展示数据。JSON的特性使JSON成为理想的数据交换语言。

JSON建构于两种结构:“名称/值”对的集合。

支持的数据类型:

string-只支持双引号,不支持单引号和无引号

number-支持科学记数法

truefalse

null-没有undefined

object

array

就这七种,注意跟JS的七种数据类型区别开来,不支持函数,不支持变量(所以也不支持引用)

1、对象

对象是一个无序的“‘名称/值’对”集合。

object{"name1":"value1""name2":"value2"}

2、数组

数组是值(value)的有序集合。值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。

array["string",1,true,false,nullobject,array[]]

3、字符串(string)

字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

window.JSON

JSON.parse

将符合JSON语法的字符串转换成JS对应类型的数据:JSON字符串==>JS数据

由于JSON只有六种类型,所以转成的数据也只有6种

如果不符合JSON语法,则直接抛出一个Error对象一半用try catch捕获错误

应用场景举例:(只看带注释的那句就好)

对id是getJSON的bottom点击触发AJAX请求5.json,

//5.json的内容
{
  "name": "frank",
  "age": 18,
  "xxx": null
}

将响应的内容request.response即5.json的内容,转换成JS对应类型的数据

getJSON.onclick=()=>{
  const request=new XMLHttpRequest()
  request.open('GET','/5.json')
  request.onreadystatechange=()=>{
    if(request.readyState===4&&request.status===200){
      console.log(request.response)
      const object=JSON.parse(request.response)//看懂应用的这句就好,把符合JSON的字符串变成对象
      myName.textContent=object.name
    }
  }
  request.send()
}

console.log(request.response)的输出内容: image.png

JSON.stringify

是JSON.parse的逆运算JS数据=>JSON字符串

由于JS的数据类型比 JSON多,所以不一定能成功

如果失败,就抛出一个Error对象

let object
try{
    object = JSON.parse(内容)
}catch(error){
    console.1og('出错了,错误详情是')
    console.1og(error)
    object = {'name':'no name ' }
}