我正在将一些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从中删除JSON "UPC":083456789012,或将其转换为JSON来更新JSON,则"UPC":"083456789012",它变为有效。
0
"UPC":083456789012,
"UPC":"083456789012",
JSON是否真的可以接受以开头的整数0,或者是否可以解决问题?
前导0表示JavaScript中的八进制数。八进制数字不能包含8;因此,该数字无效。而且,JSON不(正式地)支持八进制数,因此,即使该数字不包含8,JSON还是正式无效。尽管如此,某些解析器确实支持八进制数,这可能会引起一些混乱。其他解析器会将其识别为无效序列,并会引发错误,尽管它们给出的确切解释可能有所不同。
解决方案: 如果您有数字,请永远不要将其与前导零一起存储。如果您的值需要以零开头,则不要将其视为数字,而是字符串。用引号将其存储。
在这种情况下,您的UPC 必须为12位数字,并且可能包含前导零。我认为最好的存储方式是字符串。
不过,这值得商bat。如果将其视为条形码,则将前导0视为其不可或缺的一部分,那么字符串就有意义。其他类型的条形码甚至可以包含字母字符。
另一方面。UPC是一个数字,并且用0到12位数字进行左填充的事实可以看作是显示属性。实际上,如果您通过添加一个额外的0将其左键填充到13位数字,则您将获得EAN代码,因为EAN是UPC的超集。
如果您有货币金额,€ 7.30则在将其存储为时,可能会将其显示为7.3,因此将产品代码存储为数字也很有意义。
€ 7.30
7.3
但是,该决定取决于您。我只能建议您使用字符串,这是我个人对这些代码的偏爱,如果选择数字,则必须删除该字符0才能使其正常工作。