睿小狼
睿小狼
  • 发布:2015-12-08 15:00
  • 更新:2017-12-15 01:43
  • 阅读:2487

新版Storage的严重bug

分类:HTML5+

var objStr = JSON.stringify(obj);
plus.storage.setItem("test",objStr);
var result = plus.storage.getItem("test");
JSON.parse(result);

//JSON.parse时报错,以前老版本是可以用的,新版本更新之后就这样
//附件是操作的JSON数据

2015-12-08 15:00 负责人:无 分享
已邀请:
水逸

水逸 -

plus的东西 要放在 mui.plusReady(function() { 里面处理

  • 睿小狼 (作者)

    我这是简写,都说了是JSON.parse报错

    2015-12-08 15:08

  • 睿小狼 (作者)

    重新取出的数据外面多了一层(function(){})();的包装,导致解析错误

    2015-12-08 15:11

睿小狼

睿小狼 (作者)

别提mui.plusReady,以上代码都是mui.plusReady里执行的-.-

水逸

水逸 -

var objStr = JSON.stringify(obj);
localStorage.setItem("test", objStr);
var result = localStorage.getItem("test");
JSON.parse(result);

试试

睿小狼

睿小狼 (作者)

一些简单的JSON可以, 就是一些复杂的JSON报错, 感觉是富文本中某些特殊字符影响了.

JSON的结构已经用工具校验过,肯定是没问题的.

睿小狼

睿小狼 (作者)

经过多次试验,只要JSON中包含单引号就会出错,如:

var obj = {
a : "\'a\'"
}
plus.storage.setItem("test",JSON.stringify(obj));
var str = plus.storage.getItem("test");
console.log(str);

输出的结果是:
(function(){return '{"a":"'a'"}';})()
导致JSON解析出错

无单引号时:
var obj = {
a : "a"
}
plus.storage.setItem("test",JSON.stringify(obj));
var str = plus.storage.getItem("test");
console.log(str);

输出:
{"a":"a"}
可以正常解析

  • 蔡繁荣

    以前的版本会吗

    2015-12-09 10:30

  • 睿小狼 (作者)

    回复 蔡繁荣:原来的版本不在了,不过原来的确没出这个问题,代码没有改过

    2015-12-09 11:04

DCloud_App_Array

DCloud_App_Array

此bug已修复,alpha版已包含,稳定后会更新到正式版

shwanYu

shwanYu

何时可以解决?

c***@163.com

c***@163.com

我看看

该问题目前已经被锁定, 无法添加新回复