代码编织梦想

目录

什么是JSON?

对象的序列化与反序列化

补充:对象的浅拷贝与深拷贝


什么是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中的内容
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_57310897/article/details/129674416