JSON全称(JavaScript Object Notation),通常称之为JS对象标记语言。是一种轻量级的数据交换格式。
JSON不是编程语言而是标记语言,跟HTML、XML、Markdown一样,用来展示数据。JSON的特性使JSON成为理想的数据交换语言。
JSON建构于两种结构:“名称/值”对的集合。
支持的数据类型:
string-只支持双引号,不支持单引号和无引号
number-支持科学记数法
true 和 false
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,null,object,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)的输出内容:
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 ' }
}