JSON
JSON 出现之前, 一直用 XML 来传递数据,后来 XML 越来越复杂难用。2002年,道格拉斯·克罗克福特发明了 JSON。
概念
JSON, JavaScript 对象表示法(JavaScript Object Notation), 是一种轻量级的文本数据交换格式。
JSON 文本的 MIME 类型是 "application/json"
复制代码
数据类型
object
array
number
string
boolean
null
为统一解析,string和object的键必须使用双引号" "
复制代码
语法
JSON 实际上是 JavaScript 的一个子集,使用 JavaScript 语法,采用 JavaScript 的方式操作对象和数组。
复制代码
数据结构
1.对象
var packJson = {
"name": "Liza",
"password": "123"
}
增:
packJson.id = "hdyehsjdejshyde"
查:
packJson.name
改:
packJson.name = "Lily"
删:
delete packJson.name
2.数组
let arr = [
{ "name":"Google", "info":[ "Android", "Google 搜索", "Google 翻译" ] },
{ "name":"Runoob", "info":[ "菜鸟教程", "菜鸟工具", "菜鸟微信" ] },
{ "name":"Taobao", "info":[ "淘宝", "网购" ] }
]
增:
arr.push({ "name":"baidu", "info":[ "百度"] })
查:
arr[0].name
改:
arr[3] = {"name":"juejin", "info":[ "掘金"] }
删:
delete arr[3]
复制代码
方法
1.JSON.parse(text[, reviver]) 反序列化
参数:
text:必需,一个有效的JSON字符串。
reviver:可选,一个转换结果的函数,每个成员都将调用。
用途:将服务端数据(字符串)转为 JavaScript 对象。
let obj = JSON.parse('{"name":"小明","age":14}', (key, val) => {
if (key === 'name') {
return val + '同学'
}
return val
})
// obj = {name: "小明同学", age: 14}
2.JSON.stringify(value[, replacer[, space]]) 序列化
参数:
value: 必需,一个有效的 JSON 对象。
replacer: 可选,用于转换结果的函数或数组。
space: 可选,文本添加缩进、空格和换行符。
用途:将 JavaScript 对象转换为字符串,向服务端发送数据。
let xiaoming = {
name: '小明',
age: 14,
height: 1.65,
gender: 'male'
}
JSON.stringify(xiaoming)
{"name":"小明","age":14,"height":1.65,"gender":"male"}
JSON.stringify(xiaoming, null, ' ')
"{
"name": "小明",
"age": 14,
"height": 1.65,
"gender": "male"
}"
JSON.stringify(xiaoming, ['name', 'age'], ' ')
"{
"name": "小明",
"age": 14
}"
const convert = (key, val) => {
let res = typeof val === 'string' ? val.toUpperCase() : val
return res
}
JSON.stringify(xiaoming, convert, ' ')
"{
"name": "小明",
"age": 14,
"height": 1.65,
"gender": "MALE"
}"
复制代码
参考: