目录
什么是JSON?
JSON的语法:
JSON 语法是 JavaScript 对象表示语法的子集。JSON 数据的书写格式是:键名:键值
1. JSON 数字可以是整型或者浮点型:
{ "age":30 }
2. JSON 对象在大括号 {} 中书写:
{ "name":"JSON" , "类型":"格式" }
3. JSON 数组在中括号 [] 中书写:
[
{ key1 : value1-1 , key2:value1-2 },
...
{ key1 : valueN-1 , key2:valueN-2 },
]
4. JSON 布尔值可以是 true 或者 false:
{ "flag":true }
5. JSON 可以设置 null 值:
{ "yuyu":null }
练习:请根据下面的描述,用JSON语法编写一个对象 分值2分
“小明今年22岁,来自杭州。兴趣是看电影和旅游。他有两个姐姐,一个叫小芬,今年25岁,职业护士。还有一个叫小芳,今年23岁,是一名小学老师。”
let person = {
"name": "小明",
"age": 22,
"hometown": "杭州",
"Hobbies": ["看电影", "旅游"],
"sisters": [
{
"name": "小芬",
"age": 25,
"profession": "护士"
},
{
"name": "小芳",
"age": 23,
"profession": "小学老师"
}]
}
对象的序列化与反序列化
对象的序列化: 对象转JSON格式的字符串
为什么序列化:方便数据的传输和存储
// JSON.stringify();对象的序列化
let str=JSON.stringify(obj)
console.log(str);//{"name":"xioaming","age":18}
console.log(typeof str);//string
对象的反序列化:JSON格式的字符串 转成对象
// JSON.parse()
let obj1=JSON.parse(str)
console.log(obj1);
补充:对象的浅拷贝与深拷贝
浅拷贝:当修改拷贝的对象时,原来的对象也会受到影响
let obj2={
name:"obj2",
}
//浅拷贝 修改obj3中的name的时候 obj2中的name也修改
let obj3=obj2;//obj3复制obj2
obj3.name="obj3";//修改obj3中的name
console.log(obj2);
console.log(obj3);
深拷贝:当修改拷贝的对象时,原来的对象不会受到影响
let obj2={
name:"obj2",
}
// 深拷贝:对象的序列化和反序列化
console.log(obj==obj1);//false obj1已经不是原来的对象obj了
let obj4=JSON.parse(JSON.stringify(obj2));//深拷贝
obj2.name="aaa";
console.log(obj2);
console.log(obj4);//修改obj2 中的内容 不会影响到obj4中的内容