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自己支持的一些文件格式,以 ...
随机推荐
- .NET Core 3.0 发布单文件可执行程序
Windows dotnet publish -r win10-x64 /p:PublishSingleFile=true maxOS dotnet publish -r osx-x64 /p:Pub ...
- 维护solr索引库
一 2)solrcore 一个solr下可以有多个solrcore,每个solrcore就是一个独立的索引库3)solrconfig.xml lib:配置solr的扩展包的位置,不指定路径 ...
- OpenCl入门——实现简单卷积
现在的卷积实现无非是那么几种:直接卷积.im2col+gemm.局部gemm.wingrod.FFT.如果直接卷积的话,其实kernel函数是比较好实现.以下代码参考至<OpenCL Progr ...
- C语言编译过程及相关文件
1,C程序编译步骤 C代码编译成可执行程序经过4步: 1)预处理:宏定义展开.头文件展开.条件编译等,同时将代码中的注释删除,这里并不会检查语法 2)编译:检查语法,将预处理后文件编译生成汇编文件 3 ...
- 使用FindCmdLineSwitch处理命令行参数
一.四个形式(变体) .function FindCmdLineSwitch(const Switch: string; const Chars: TSysCharSet; IgnoreCase: B ...
- Django—model系统:ORM对数据库操作
基本操作 <1> all(): 查询所有结果 <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <3> get(**kwargs): ...
- GOLANG接口编程的最佳实践一 (sort.Sort(data Interface ) )
package main import( "fmt" "sort" "math/rand" ) //定义一个武当派的结构体 type Wud ...
- Hadoop_23_MapReduce倒排索引实现
1.1.倒排索引 根据属性的值来查找记录.这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址.由于不是由记录来确 定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(invert ...
- CentOS7.x忘记root密码如何破解
在CentOS7.x中,有一个单用户模式.CentOS7.x进入单用户模式与CentOS6.x略有不同,要复杂一些. 如果我们忘记了root的密码,可以在单用户模式下重置密码. 注意:此操作必须在服务 ...
- u-boot从nand 启动时的问题解决记录
u-boot从nand 启动时的问题解决记录 问题描述: 使用u-boot-1.1.6版本u-boot移植到JZ2440开发板上,当前已经能够从Nor启动,但是不能从Nand正常启动(u-boot大小 ...