JSON数据的缓存
前端有时候会遇到JSON数据的缓存,后台给我们JSON数据是一个对象,直接缓存起来它存的是字符串 "[object Object]"。这是因为在缓存时会隐式调用toString方法来转为字符串,而JSON对象是普通对象用toString转换之后就变成了字符串"[object Object]",普通对象的原型上的 Object.prototype.toString方法不是转换为字符串的,而是用来检测数据类型的 )。因此缓存的时候不能直接存,需要用JSON.stringify(result)把JSON对象转成字符串,取的时候再转成对象。
缓存时会隐式调用toString方法转为字符串:
<script>
//缓存时会隐式调用toString方法
//实例一:
var data={
name:'xh'
}
console.log(typeof data);//object 类型
sessionStorage.setItem('data',data);
var result=sessionStorage.getItem("data");
console.log(typeof result);//string类型 //实例二:
sessionStorage.setItem('num',1);//存的是number类型
console.log(typeof sessionStorage.getItem('num'));//取出来是string类型 </script>
直接缓存时:
var data={
"name":"这是缓存"
}; sessionStorage.setItem("data",data);
var result=sessionStorage.getItem("data");
console.log(result) // 结果 [object Object]
JSON有二个方法 JSON.stringify(result)和JSON.parse(result)。
JSON.stringify(result) JSON对象转成字符串(官方:将一个JavaScript值(对象或者数组)转换为一个 JSON字符串)
JSON.parse(result) JSON字符串转换成对象(官方:解析JSON字符串,构造由字符串描述的JavaScript值或对象)
存储时用JSON.stringify(result)把JSON对象转成字符串
var data={
"name":"这是缓存"
};
sessionStorage.setItem("data",JSON.stringify(data)); var result=sessionStorage.getItem("data");
console.log(result,result.name) // 结果 {"name":"这是缓存"} undefined 这是一个字符串不是JSON对象无法取出name
取缓存时,再用JSON.parse(result) 把JSON字符串转换成对象 现在就可以取得对象的属性了
var data={
"name":"这是缓存"
};
sessionStorage.setItem("data",JSON.stringify(data));
var result=JSON.parse(sessionStorage.getItem("data"));//转成JSON对象
console.log(result,result.name) // 结果 Object { name: "这是缓存" } 这是缓存
JSON数据的缓存的更多相关文章
- Silverlight项目笔记7:xml/json数据解析、TreeView、引用类型与数据绑定错误、图片加载、虚拟目录设置、silverlight安全机制引发的问题、WebClient缓存问题
1.xml/json数据解析 (1)xml数据解析 使用WebClient获取数据,获取到的数据实例化为一个XDocument,使用XDocument的Descendants(XName)方法获得对应 ...
- asp.net mvc json数据缓存
一些虚拟主机资源给的少, 如果直接用框架缓存, 估计内存就爆了吧, 如果不用缓存, 虚拟主机自带的数据库也是限制资源的, 访问多了就直接给timeout了, 用json文件形式缓存查询出来的数据, 虽 ...
- XML 数据请求与JSON 数据请求
(1)XML 数据请求 使用 AFNetworking 中的 AFHTTPRequestOperation 和 AFXMLParserResponseSerializer,另外结合第三方框架 XMLD ...
- Netflix Falcor获取JSON数据
Netflix开源了JavaScript库Falcor,它为从多个来源获取JSON数据提供了模型和异步机制. Netflix利用Falcor库实现通过JSON数据填充他们网页应用的用户界面.所有来自内 ...
- 使用 AFNetworking 进行 XML 和 JSON 数据请求
(1)XML 数据请求 使用 AFNetworking 中的 AFHTTPRequestOperation 和 AFXMLParserResponseSerializer,另外结合第三方框架 XMLD ...
- RandomUser – 生成随机用户 JSON 数据的 API
RandomUser 是一个 API,它为您提供了一个或者一批随机生成的用户.这些用户可以在 Web 应用程序原型中用作占位符,将节省您创建自己的占位符信息的时间.您可以使用 AJAX 或其他方法来调 ...
- 模拟QQ侧滑控件 实现三种界面切换效果(知识点:回调机制,解析网络json数据,fragment用法等)。
需要用到的lib包 :解析json gson包,从网络地址解析json数据成String字符串的异步网络解析工具AsyncHttpClient等 下载地址:点击下载 Xlistview 下拉上拉第三 ...
- Jquery 模板插件 jquery.tmpl.js 的使用方法(1):基本语法,绑定,each循环,ajax获取json数据
jquery.tmpl.js 是一个模板js ,主要有2个方法 (1):$.template()方法,将一段script或者是Html编译为模板,例如 $.template('myTemplate' ...
- Catalyst揭秘 Day8 Final 外部数据源和缓存系统
Catalyst揭秘 Day8 Final 外部数据源和缓存系统 今天是Catalyst部分的收官,主要讲一些杂项内容. 外部数据源处理 什么叫外部数据源,是SparkSql自己支持的一些文件格式,以 ...
随机推荐
- ADO.NET连接数据库增删查改创建公用类
顺序如下:再web.config中添加数据库的用户名和密码 创建公用类. //添加进web.config中的账号和密码 /*<connectionStrings> <add name ...
- paramiko模块实现远程传输控制
一.什么是paramiko呢? paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的parami ...
- C#学习资料
http://www.runoob.com/csharp/csharp-delegate.html
- HTML类
class Html: def __init__(self,name): self.name = name @staticmethod def full_name(): print('全称:Hype ...
- Windows 下 nvm, node, npm 的下载、安装与配置
主要解决的问题 下载安装完 nvm 和 node 后,缺失 npm 文件 执行 jasmine 等命令时提示「不是内部或外部命令...」及全局变量的设置 下载与安装 一.nvm github 下载地址 ...
- C#面向对象 (访问修饰符、封装、继承、多态)
先看一下创建一个新项目时的基本格式 using System; using System.Collections.Generic; using System.Linq; //引用的命名空间 using ...
- 智能指针原理及实现(2)unique_ptr
只允许基础指针的一个所有者. 可以移到新所有者(具有移动语义),但不会复制或共享(即我们无法得到指向同一个对象的两个unique_ptr). 替换已弃用的 auto_ptr. 相较于 boost::s ...
- docker container 导入和导出
目录 docker container 导入和导出 1.前言 2.docker container 的导出 3.docker container 的导入 4.镜像和容器 导出和导入的区别 docker ...
- Navicat连接腾讯云实例MySQL
Navicat连接腾讯云实例MySQL 授权所有的用户通过root账户 root密码登陆远程数据库 连接腾讯云实例上的MySQL数据库 这里的密码填入数据库的密码 这里的密码填入登陆云实例的密码也就是 ...
- Codeforces 1216E2 枚举位数+二分
两个二分 枚举位数 #include <bits/stdc++.h> #define MOD 1000000007 using namespace std; typedef long lo ...