本文已参与「新人创作礼」活动,一起开启掘金创作之路。
什么是JSON
JSON的全称为JavaScript Object Notation,中文为JavaScript 对象表示法。是一种轻量级的、与语言无关的存储和交换文本信息的语法,或者说是一种数据交换格式,类似XML,通常用于和服务端交换数据。
JSON数据类型
- 字符串:必须写在双引号中
{"name1":"zhangsan"} - 数字:必须是整数或浮点数
{"height":180} - 对象:
{"hobbies":{"hobbies1":"running","hobbies2":"reading"}} - 布尔值:
{"isman":true} - 数组:
{"like":["cat","dog","dove"]} - null:
{"haveCat":null}
JSON的数据格式
- 以对象形式存储:
{“键名”:“键值”,“键名”:“键值”,......},,JSON的数据被大括号包裹,键名必须为字符串,键值为JSON数据类型。 - 以数组类型存储:
[value1,value2,value3,......],value值为JSON数据类型。
对JSON对象的操作
获取值
let Obj = {
"name":"zhangsan",
"age":33,
"height":183,
"hobbies":{
"hobby1":"running",
"hobby2":"reading"
}
}
//方式一
let name = Obj.name
let hobby1 = Obj.hobbies.hobby1
//方式二
let name = Obj["name"]
let hobby1 = Obj.hobbies["hobby1"]
修改值
//方式一
Obj.name = "lisi"
Obj.hobbies.hobby1 = "eatting"
//方式二
Obj["name"] = "lisi"
Obj.hobbies["hobby1"] = "eatting"
删除对象属性
//方式一
delete Obj.name
delete Obj.hobbies.hobby1
//方式二
delete Obj["name"]
delete Obj.hobbies["hobby1"]
对JSON数组的操作
获取值
let Obj = {
"name":"zhangsan",
"age":33,
"height":183,
"hobbies":["running","reading","eatting"]
}
//方法一
let hobby1 = Obj.hobbies[0]
//方法二
for(i in Obj.hobbies) {
let hobby = Obj.hobbies[i]
console.log(hobby)
}
//方法三
for(i = 0;i < Obj.hobbies.length;i++) {
let hobby = Obj.hobbies[i]
console.log(hobby)
}
修改值
Obj.hobbies[0] = "playing"
删除数组元素
delete Obj.hobbies[0]
JSON的数据转换
-
字符串转换为JavaScript对象
parse():需要转换的数据必须在引号中,不然会报错;不建议在JSON中使用函数。
let Obj = {
"name":"zhangsan",
"age":33,
"height":183,
"hobbies":["running","reading","eatting"]
}
let newObj = JSON.parse('Obj')
eval():是全局对象的一个属性,尽量不要使用,他会使用与调用者相同的权限执行代码,如果被恶意劫持并修改,可能会导致在计算机中执行恶意代码。
let obj = {"name":"zhangsan","age":33}
let newObj = eval("obj")
Function():
let obj = {"name":"zhangsan","age":33}
let json
function strToJson(obj) {
json = (new Function(obj))()
return json
}
-
JavaScript对象转换为字符串
stringify():
let obj = {"name":"zhangsan","age":33}
let arr = ["zhangsan","lisi","wangwu"]
let newObj = JSON.stringify(obj)
let nreArr = JSON.stringify(arr)