首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON语法错误:“object中属性值后的”意外数字“或”JSON.parse:预期“、”或“}”

JSON语法错误:“object中属性值后的”意外数字“或”JSON.parse:预期“、”或“}”
EN

Stack Overflow用户
提问于 2013-03-08 14:24:58
回答 2查看 86.1K关注 0票数 36

我使用$.ajax()接收来自POST请求的响应:

代码语言:javascript
复制
{"command": 6,"log_size":50,"log":[
    {"type": 30,"tag": "*NETEVENT*","sensors": "0D","ti": 1047161877,"to": 0},
    {"type": 30,"tag": " __START__","sensors": "00","ti": 0000011410,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0A","ti": 0000011411,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0B","ti": 0000011411,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0D","ti": 0000011412,"to": 0},
    {"type": 30,"tag": " __START__","sensors": "00","ti": 1047215799,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0A","ti": 1047215799,"to": 0},
    {"type": 30,"tag": " __START__","sensors": "00","ti": 1047218051,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0D","ti": 0000002598,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0B","ti": 1047068795,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0D","ti": 1047068796,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0A","ti": 1047071223,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0B","ti": 1047071224,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0D","ti": 1047071225,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0A","ti": 0000000010,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0D","ti": 0000000012,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0C","ti": 1047130533,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0A","ti": 0000000026,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0A","ti": 0000000180,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0B","ti": 0000000206,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "09","ti": 0000000212,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "08","ti": 0000000383,"to": 0},
    {"type": 30,"tag": " __START__","sensors": "00","ti": 0000001562,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0A","ti": 0000001563,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0B","ti": 0000001564,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0D","ti": 1047161632,"to": 0},
    {"type": 30,"tag": " __START__","sensors": "00","ti": 1047161875,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0B","ti": 1047161876,"to": 0}
],
"response":"ok"}

对于IE运行良好,在Chrome中显示为"Syntax error: unexpected number",在火狐中消息为"SyntaxError: JSON.parse: expected ',' or '}' after property value in object"

在各种在线JSON解析器和验证器中,响应的格式似乎没有问题,但在firefox和chrome中不起作用。

知道为什么会这样吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-08 14:28:41

一个数字不能以没有意义的0开头。

此操作无效:"ti": 0000011410

来自JSON.org

您应该在源端修复它,但是如果不能,假设您的总是类似于这个(没有字符串中的数字),那么您可能会用正则表达式来修复它:

代码语言:javascript
复制
var obj = JSON.parse(str.replace(/ 0+(?![\. }])/g, ' '));

您甚至不能在这里使用邪恶的eval,因为"0000011410"将被解析为八进制:

代码语言:javascript
复制
console.log(eval('({"ti": 0000011410})'));

输出

代码语言:javascript
复制
{ti: 4872}

这可能解释了为什么在JSON中禁止以无意义的0开头的数字更安全。

票数 64
EN

Stack Overflow用户

发布于 2020-01-08 07:28:27

在json中的数字前面删除0。

票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15296196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档