Google Chrome JSON.编码/解码数组

Google Chrome JSON.encode / decode array

本文关键字:解码 数组 编码 Chrome JSON Google      更新时间:2023-09-26

所以,我写一个小的Greasemonkey Userscript和它的工作在Firefox中很好,但如果我试图运行它与Tampermonkey在谷歌Chrome我得到奇怪的错误编码/解码数组。

我试图使脚本跨浏览器兼容,所以我不得不写一个函数来决定使用哪些JSON方法

function jsonEncode(string) { 
  try {
    return JSON.stringify(string); 
  } catch (e) {
    return JSON.encode(string); 
  }
}
function jsonDecode(obj) {
  try { 
    return JSON.parse(obj); 
  } catch (e) { 
    return JSON.decode(obj);
  }
}

为了简化,我现在将代码简化为一个简单的数组,并尝试编码/解码和迭代

var array = ['string1', 'string2'];
var encoded = jsonEncode(array);
localStorage.setItem('json_test', encoded);
var decoded = jsonDecode(localStorage.getItem('json_test'));
for(var i = 0; i < decoded.length; i++) {
    console.log(decoded[i]); 
}

我期望输出是

string1
string2

chrome给了我这个

[
"
s
t
r
i
n
g
1
"
,
"
s
t
r
i
n
g
2
"
]

有没有人知道如何解决这个问题,或者为什么chrome是这样做的?

EDIT 1: Chrome Version 15.0.874.121 m

编辑2:还没有弄清楚,但当我尝试它与一个对象,而不是一个数组,它的工作,所以我会这样做,现在,感谢您的时间和帮助!

在Chrome中打开JS控制台-这可以让你在循环中设置断点-并在变量上添加监视。

除了jsonDecode不解码-还有括号…

问题是你解码成字符串,就像它看起来的那样——这就是为什么它把字符串分成字母——就像你编码它一样。

JSON普通表示数组…也许可以检查文档以获得正确的输出参数。