编辑:问题是我在使用 parseInt 时没有指定基数。我想确切地了解为什么会发生这种情况 - 我会奖励任何能告诉我为什么这只会给 Firefox 中的 08 和 09 值造成问题的人的答案!
我有一个二维整数数组作为 JSON 对象存储在 MySQL 数据库中。
当我通过 jquery 的 ajax 请求这个对象时,JSON 验证 - 它也通过JSONLint没有意外。然后我将其转换为二维 javascript 数组,使用 parseInt 将纯字符串 JSON 键转换为数组的整数键。
这在几乎所有浏览器/平台上都可以正常工作:
原始 JSON:
....
"07": [0, 1...
"08": [0, 1...
"09": [1, 1...
"10": [1, 0...
....
循环输出(Safari/Chrome,OSX):
JSON Key (parseInt value): [array]
....
07 (7): [0, 1...
08 (8): [0, 1...
09 (9): [1, 1...
10 (10): [1, 0...
....
循环输出(Firefox OSX,iOS):
JSON Key (parseInt value): [array]
....
07 (7): [0, 1...
08 (0): [0, 1...
09 (0): [1, 1...
10 (10): [1, 0...
....
...有没有搞错?这些键(8 和 9)是唯一没有正确通过 parseInt 的键,并且它的发生非常一致。我已经验证 JSON 数组完整且未经修改地进入所有浏览器 - 密钥仍然是 08 和 09 的事实就是证明。但是,一旦 08 和 09 通过 parseint,它们就会返回 0。18 和 19 正确通过,28 和 29 也是如此。这两个键周围没有杂散空格、非 ascii 字符或任何其他可能导致它们的键被错误地阅读。我完全被难住了。
你可以在这里找到我的完整 JSON 。我错过了什么?
或者,如果有一种方法可以完全绕过它,我愿意考虑。感谢您的帮助,这让我发疯了!