Ошибка JSON.parse - PullRequest
       3

Ошибка JSON.parse

0 голосов
/ 23 мая 2018

Я пытаюсь создать объект JavaScript из строки JSON "объект", но он завершается неудачно с ошибкой:

"SyntaxError: JSON.parse: Ожидаемый ',' или '}' после значения свойствав объекте в строке 1 столбца 48 данных JSON "

var jsobj = JSON.parse( '{"lineID":11,"siteID":3,"mystring":"this is a \"Test\" string with quotes"}' );

mystring - это строка, содержащая двойные кавычки, но я правильно их избежал с помощью обратной косой черты.Почему произойдет сбой?

Я заметил, что на этом онлайн-сайте анализа JSON все в порядке: json parser

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Для двойных кавычек вы должны использовать двойную обратную косую черту

var jsobj = JSON.parse( '{"lineID":11,"siteID":3,"mystring":"this is a \\"Test\\" string with quotes"}' );

это должно работать

0 голосов
/ 23 мая 2018

Символ \ является escape-символом для JavaScript и JSON.

Когда анализатор JavaScript анализирует строковый литерал, он превращает \" в исходном коде JavaScript в " в строке.

Когда анализатор JSON анализирует строку, он обнаруживает неэкранированные " и ошибки.

Чтобы включить \" в данные JSON, необходимо экранировать\ в строковом литерале JavaScript: \\".

var jsobj = JSON.parse('{"lineID":11,"siteID":3,"mystring":"this is a \\"Test\\" string with quotes"}');
console.log(jsobj);

Вложенные форматы данных - это всегда боль.Лучше всего избегать этого, когда это возможно.

Нет смысла в начале иметь строковый литерал, содержащий JSON в JavaScript.

JSON - это подмножество JavaScript.Просто используйте JSON как литерал JavaScript.

var jsobj = {
  "lineID": 11,
  "siteID": 3,
  "mystring": "this is a \"Test\" string with quotes"
};

console.log(jsobj);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...