2015-08-21 7 views
8

Javascript не читает эту строку json, так как содержит один символ кавычки, который он видит как конец строки.Одиночные кавычки в значении json

Как я могу избежать одиночной кавычки, чтобы ее не видели как конец строки?

var json = '{"1440167924916":{"id":1440167924916,"type":"text","content":"It's a test!"}}'; 

var parsed = JSON.parse(json); 
+1

Почему вы пишете объект, сериализованный как JSON, а затем декодируете его на следующей строке? Просто напишите литерал объекта. Нет необходимости помещать ваш объект в строку. – Fuser97381

+0

Забавно, когда кто-то задает простой вопрос js, как наводнения эквивалентных ответов в течение одной минуты. Это, безусловно, дубликат. – Fuser97381

+1

Это не имеет никакого отношения к JSON. Проблема в том, что у вас есть одна цитата в строковом литерале JavaScript, ограниченном одинарными кавычками. Тот факт, что строка содержит JSON, находится рядом с точкой. (Почему вы пишете статическую строку JSON и затем все равно разбираете ее, почему бы просто не удалить кавычки из-за края и рассматривать ее как литерал объекта JavaScript?) – Quentin

ответ

10

Используйте обратную косую черту в escape the character:

var json = '{"1440167924916":{"id":1440167924916,"type":"text","content":"It\'s a test!"}}'; 
var parsed = JSON.parse(json); 
+0

Использование обратной косой черты - пример «экранирования» символа. См. Дополнительную информацию [здесь] (http://www.w3schools.com/js/js_strings.asp) –

+1

Это отвечает на вопрос, который я опубликовал. Тем не менее, решение, которое я использовал, состояло в том, чтобы создать объектный литерал непосредственно из json вместо того, чтобы сначала превратить его в строку, просто удалив внешние одиночные кавычки. Спасибо Квентину за это. – ezero

5

Просто избежать одинарные кавычки с помощью обратной косой черты, такого как \':

var json = '{"1440167924916":{"id":1440167924916,"type":"text","content":"It\'s a test!"}}'; 
 

 
var parsed = JSON.parse(json); 
 

 
//Output parsed to the document using JSON.stringify so it's human-readable and not just "[object Object]": 
 
document.write(JSON.stringify(parsed));

0

экранировать с помощью обратной косой черты

var json = '{"1440167924916":{"id":1440167924916,"type":"text","content":"It\'s a test!"}}'; 

var parsed = JSON.parse(json); 
+0

То, что дает SyntaxError: Неожиданный токен ILLEGAL – Quentin

+0

@Quentin: Должен теперь отлично работать. Я думаю, что, пытаясь отступом JSON, нажатие клавиши «enter» вызывает проблему. – mechanicals

Смежные вопросы