JSON字符串、存储方式


json字符串
json格式的字符串
“abc123truelkgsjhgo” 普通字符串

hgahgo

” html格式字符串
键值对格式 键和值都需要用双引号去包括
‘“name”:“yasuo”’

用途

在网络传输时使用。 比如前后端交互。
不能够传输对象和数组的。
只能通过字符串形式去传输数据。

所以说我们如果要传输对象和数组,我们需要将其转换为字符串。
json格式就是满足对象和数组数据结构的一种字符串

使用方法

JSON.parse()
把json格式的字符串转为js中的数组或对象

json.stringify()
把js中的数组或对象转为json字符串

对象转为json字符串后的格式:
‘{“属性名”:“属性值”,“属性名2”:“属性值2”,“属性名3”:“属性值3”}’


        var str = {
            name: "张三",
            age: 18,
            hobby: "乒乓球",
            fun: function() {
                    console.log("猜猜我是谁");

                }
        }
        // 对象转json字符串   JSON.stringify()
        var test = JSON.stringify(str);
        console.log(test);
        // json字符串转对象  JSON.parse()
        var test1 = JSON.parse(test);
        console.log(test1);

在这里插入图片描述

数组:
1.存储数组不是对象。
‘[1,2,3,4]’
2.存储数组为对象
‘[{“name”:“亚索”,“age”:“28”,“skill”:“狂风绝息斩”},{“name”:“劫”,“age”:20,“skill”:“瞬狱影杀阵”}]’

 
        var arr = [1, 2, 3, true, "default", false, null, "嬛嬛"];
        // 数组转json字符串
        var array = JSON.stringify(arr);
        //json字符串转数组
        var array0 = JSON.parse(array);
        console.log(array);
        console.log(array0);
        var arr0 = [{
                name: "张三",
                age: 18,
                hobby: "乒乓球",
                fun: function() {
                    console.log("猜猜我是谁");
                }
            }, {
                name: "李四",
                age: 30,
                hobby: "羽毛球"
            },
            1, "嬛嬛"
        ]
        var array1 = JSON.stringify(arr0);
        var array2 = JSON.parse(array1);
        // 数组转json字符串
        console.log(array1);
         //json字符串转数组
        console.log(array2);

在这里插入图片描述

数字和布尔值可以不用带双引号

对象在转json字符串时,函数会被自动过滤掉。

parse() 这个方法会新创建一个对象或数组

错误信息:
VM14:1 Uncaught SyntaxError: Unexpected token 亚 in JSON at position 8

本地存储

   不会对服务器造成负担
   提高访问速度
   
   会占用本地内存

   重要的信息不安全

localstorage h5新增的 IE8以下不兼容 5MB
sessionstorage 5M
cookie 4KB

服务器:

数据库

优点:
容量比cookie要大
局限:
有兼容性问题
不会被爬虫获取
本质上是对字符串的读取操作,比较频繁,存储的内容比较多,会导致页面卡顿。

localstorage|sessionstorage

localstorage与sessionstorage的基本操作大致相同,这里只写一个,另一个参考这些就可以
使用:
1.先考虑兼容性问题

if(!window.localStorage){
   alert("该浏览器不支持localstorage!")
   return false;
}else{
   //业务逻辑
}

2.将数组存储到localstorage
三种写法:

 			key       value
   storage["name"] = "yasuo";
   storage.setItem("name","sss")
   storage.age = 18;

3.读取

  storage["键"];
   storage.getItem("键")
   storage.;

2.3例子

		var str = window.localStorage;
        // 存储键值对
        str["name"] = "张三";
        str.setItem("name1", "李四");
        str.name2 = "王五";
        // 获取值
        console.log(str["name"]);
        console.log(str.name);
        console.log(str.getItem("name"));

在这里插入图片描述

4.删除
storage.removeItem(“age”);

str.removeItem("name2");

在这里插入图片描述

5.修改:
用同一个键去赋不同的值就是修改

        str["name"] = "阿拉蕾";

在这里插入图片描述

6.清除全部
storage.clear();
7.获取所有的键值
【注】 获取所有值(获取值时有两种方法变量1.变量.getItem(“键”)、变量[“键”],不能使用变量.键的方式,因为在获取键的时候,返回的就是一个字符串形式"键")

for (var i = 0; i < storage.length; i++) {
   var key = storage.key(i);
   var value = storage.getItem(key); 
}

【注意】 localstorage只能存储字符串,如果将对象或者数组放入,取出来时是string类的数据。

如果要存储对象或数组,则先将对象或者数组转为json的字符串,然后再存储,需要时,取出并将其转为对象或数组使用、。

存储事件:永久存储的

同源性:
不同的域名下存储的数据是不共同的

获取所有键或值

获取所有键或所有值(获取值时有两种方法变量.getItem(“键”)、变量[“键”],不能使用变量.键的方式,因为在获取键的时候,返回的就是一个字符串形式"键")

        for (var i = 0; i < str.length; i++) {
            var key = str.key(i);

            var keyValue = str[key];

            console.log(key);
            console.log(keyValue);
        }

cookie

cookie:
用来存储浏览器端的本地数据
特点:
1.按照域名来存储的
不同的域名下的cookie数据不共通。
2.有存储的路径
127.0.0.1:8080/a/b.html cookie /a/b /
127.0.0.1:8080/b/b.html cookie /b/b
3.cookie 存储的数据格式
“键1=值1;键2=值2”

4.存储大小
4KB 50条左右
5.时效性:
默认是会话级别
我们可以手动设置cookie的过期时间
6.操作权限
前端可以操作
后端可以操作
7.发送请求时,cookie中的数据会被自动传输到后端

8.cookie只能在域名环境下才可以使用

使用方法:
增 (写入)
document.cookie = “键=值”;
增加时一次只能增加一条

		document.cookie = "name=张三; name1=王五";
        document.cookie = "name1=lisi;";
        document.cookie = "age=2;";

在这里插入图片描述

查(读取)
document.cookie
一次时获取cookie中的所有内容

同一域名下
document.cookie = “键=新值”;

没有删除方法,有过期时间
如果要删除,则将该数据的有效期设置为过期即可。

有效期设置:

document.cookie = “键=值;expires=”+日期;

服务器的时间以格林威治事件为准的

封装 写入键值对
		function setCookie(name, value, exp) {
            var date = new Date();
            // 是否有过期时间
            if (exp == "") {
                document.cookie = name + "=" + value;
            } else {
                date.setHours(date.getHours() - 8);
                // 过期时间为当前时间后exp秒
                date.setTime(date.getTime() + 1000 * exp);
                document.cookie = name + "=" + value + ";expires =" + date;
            }
        }
        setCookie("hobby", "乒乓球", 20);

【注】此验证需要这样操作:封装完函数后,调用。打开网页上观察验证,需要先返回代码编辑的地方,将用函数代码注释或删除,在返回感觉网页,等到时间过期之后再刷新页面,时间过期的键值对就会消失,删除掉了

封装 获取键或值
		function getCookie() {
            // 是否有键值对
            if (document.cookie.length > 0) {
                var arr = document.cookie.split(";");
                for (var i = 0; i < arr.length; i++) {
                    var tmp = arr[i].split("=");
                    console.log(tmp[0]);
                    console.log(tmp[1]);
                }
            }
            return "";
        }
        console.log(getCookie())
获取指定键的值
		function getCookie(key) {
            //  是否有键值对
            if (document.cookie.length > 0) {
                var start = document.cookie.indexOf(key + "=");

                console.log(document.cookie);

                console.log(start);

                if (start != -1) {
                    var end = document.cookie.indexOf(";", start);
                    // 只有一对键值
                    if (end == -1) {
                        end = document.cookie.length;
                    }
                    console.log(document.cookie.substring(start + key.length + 1, end));
                }
            }
        }
        getCookie("name");
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值