# 初始 JSON
# JSON 是什么
Ajax 发送和接收数据的一种格式
JSON 全称是 JavaScript Object Notation
# 为什么需要 JSON
JSON 有 3 种形式,每种形式的写法都和 JS 中的数据类型很像,可以很轻松的和 JS 中的数据类型互相转换。
# JSON 的 3 中形式
# 简单值形式
JSON 的简单值形式就对应着 JS 中的基础数据类型
数字,字符串,布尔值,null
"username" |
注意事项:
- JSON 中没有 undefined 值
- JSON 中的字符串必须使用双引号
- JSON 中是不能注释的
# 对象形式
JSON 的对象形式就对应着 JS 中的对象
{ | |
"name":"张三", | |
"gender":"男", | |
"age":18, | |
"user":{ | |
"name":"李四", | |
"gender":"女", | |
"age":"20" | |
}, | |
} |
注意事项:
JSON 中对象的属性名必须用双引号,属性值如果是字符串也必须用双引号。
JSON 中只要涉及到字符串,就必须使用双引号。
不支持 undefined
# 数组形式
JSON 的数组形式就对应着 JS 中的数组
[ | |
"张三", | |
"李四", | |
"刘桑" | |
] |
[ | |
{ | |
"name":"张三", | |
"age":18 | |
}, | |
{ | |
"name":"李四", | |
"age":20 | |
} | |
] |
注意事项:
数组中的字符串必须使用双引号
JSON 中只要涉及到字符串,就必须使用双引号
不支持 undefined
# JSON 的常用方法
# JSON.parse
JSON.parse 可以将 JSON 格式的字符串解析成 JS 中的对应值
一定要是合法的 JSON 字符串,否则会报错
console.log(JSON.parse(xhr.responseText)) |
# JSON.stringify
JSON.stringify 可以将 JS 的基本数据类型,对象或者数组转换成 JSON
xhr.send(JSON.stringify( | |
{ | |
name:"zhangsn", | |
age:"18", | |
hobby:["zuqi","bingbqiu"], | |
userTo:{ | |
family:"sl", | |
mother:"lidama" | |
} | |
} | |
)) |
# 使用 JSON.parse 和 JSON.stringify 封装 localStorage
import {set,get} from './js/storage.js' | |
set('username','dkx') | |
set('age',18) | |
set('zs',{ | |
name:"张三", | |
age:18 | |
}) | |
console.log(get('username')) | |
console.log(get('age')) | |
console.log(get('zs')) |
import {set,get,remove,clear} from './js/storage.js' | |
set('username','dkx') | |
set('age',18) | |
set('zs',{ | |
name:"张三", | |
age:18 | |
}) | |
remove('username') | |
console.log(get('username')) | |
console.log(get('age')) | |
console.log(get('zs')) |
import {set,get,remove,clear} from './js/storage.js' | |
set('username','dkx') | |
set('age',18) | |
set('zs',{ | |
name:"张三", | |
age:18 | |
}) | |
remove('username') | |
clear() | |
console.log(get('username')) | |
console.log(get('age')) | |
console.log(get('zs')) |