如果整数以前导零开头,为什么 JSON 无效?

2024-02-04

我正在将一些 JSON 文件导入到 Parse.com 项目中,但不断收到错误“无效的键:值对”。

它指出有一个意想不到的“8”。

这是我的 JSON 的示例:

}
 "Manufacturer":"Manufacturer",
 "Model":"THIS IS A STRING",
 "Description":"",
 "ItemNumber":"Number12345",
 "UPC":083456789012,
 "Cost":"$0.00",
 "DealerPrice":" $0.00 ",
 "MSRP":" $0.00 ",
}

如果我通过删除0 from "UPC":083456789012,或将其转换为"UPC":"083456789012",它变得有效。

JSON真的不能接受以以下开头的整数吗0,或者有办法解决这个问题吗?


JavaScript 中前导 0 表示八进制数。八进制数不能包含 8;因此,该号码无效。 此外,JSON 不(正式)支持八进制数字,因此形式上 JSON 是无效的,即使该数字不包含 8。不过有些解析器确实支持它,这可能会导致一些混乱。其他解析器会将其识别为无效序列并抛出错误,尽管它们给出的确切解释可能有所不同。

解决方案:如果您有数字,请勿将其存储为前导零。如果您的值需要有前导零,请不要将其视为数字,而应将其视为字符串。将其存储在引号中。

在这种情况下,您有一个 UPC长度需要为 12 位数字 http://en.wikipedia.org/wiki/Universal_Product_Code并且可能包含前导零。我认为存储它的最好方法是作为字符串。

不过,这是值得商榷的。如果将其视为条形码,将前导 0 视为其不可分割的一部分,那么字符串就有意义了。其他类型的条形码甚至可以包含字母字符。

另一方面。 UPC 是一个数字,它的左侧填充了 0 到 12 位数字,这一事实可以被视为显示属性。实际上,如果您通过添加额外的 0 将其左填充到 13 位,您就得到了 EAN 代码,因为 EAN 是 UPC 的超集。

如果您有货币金额,您可以将其显示为€ 7.30,当您将其存储为7.3,因此将产品代码存储为数字也是有意义的。

但这个决定取决于你。我只能建议你使用字符串,这是我个人对这些代码的偏好,如果你选择数字,那么你必须删除0使其发挥作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果整数以前导零开头,为什么 JSON 无效? 的相关文章

随机推荐