Подтвердить что ты не робот

Синтаксическая ошибка JSON: "непредвиденное число" или "JSON.parse: expected", "или" после значения свойства в объекте "

Получаю этот ответ из запроса POST, используя $.ajax():

{"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": "*NETEVENT*","sensors": "0B","ti": 1047215800,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0D","ti": 1047215800,"to": 0},
    {"type": 30,"tag": " __START__","sensors": "00","ti": 1047217510,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0B","ti": 1047217511,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0D","ti": 1047217511,"to": 0},
    {"type": 30,"tag": " __START__","sensors": "00","ti": 1047217956,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0B","ti": 1047217957,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0D","ti": 1047217957,"to": 0},
    {"type": 30,"tag": " __START__","sensors": "00","ti": 1047218051,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0A","ti": 1047218051,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0B","ti": 1047218052,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0D","ti": 1047218052,"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": 0000001564,"to": 0},
    {"type": 30,"tag": " __START__","sensors": "00","ti": 1047159660,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0A","ti": 1047159660,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0B","ti": 1047159661,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0D","ti": 1047159662,"to": 0},
    {"type": 30,"tag": " __START__","sensors": "00","ti": 1047160593,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0B","ti": 1047160593,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0D","ti": 1047160594,"to": 0},
    {"type": 30,"tag": " __START__","sensors": "00","ti": 1047161631,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0A","ti": 1047161631,"to": 0},
    {"type": 30,"tag": "*NETEVENT*","sensors": "0B","ti": 1047161632,"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", а в Firefox сообщение "SyntaxError: JSON.parse: expected ',' or '}' after property value in object"

В различных онлайн-парсерах JSON и валидаторах формат ответа кажется ОК, но в firefox и chrome не работает.

Любая идея, почему это происходит?

4b9b3361

Ответ 1

Число не может начинаться с не значимого 0.

Это неверно: "ti": 0000011410

От JSON.org:

enter image description here

Вы должны исправить это в источнике, но если вы не можете, , предполагая, что ваш JSON всегда похож на этот (без номеров в строках), возможно, вы, вероятно, исправите его с помощью регулярного выражения:

var obj = JSON.parse(str.replace(/ 0+(?![\. }])/g, ' '));

Вы даже не можете использовать зло eval, потому что "0000011410" будет анализироваться как восьмеричный:

console.log(eval('({"ti": 0000011410})'));

выходы

{ti: 4872}

Это, вероятно, объясняет, почему было сочтено более безопасным запрещать номера, начиная с несущественного 0 в JSON.