Javascript не может разобрать строку JSON

0

Я пытался разобрать эту строку JSON:

{"query": "мое расписание сегодня", "тип": "временная шкала", "название": "Сегодня события:", "время": ["2015-07-06\n20: 30: 00"] резюме ": [" Еженедельная встреча + Show & Tell (Hangouts) "]," description ": [" Weekly Bullets (20 minutes): "]}

Это действительный JSON (проверяется на jsonformatter.curiousconcept.com). Тем не менее, я получил erorr:

SyntaxError: Неожиданный токен

in (файл angular.js):

function fromJson(json) {
    return isString(json)
        ? JSON.parse(json)
        : json;
}

У кого-нибудь есть идеи?

2 ответа

3

Проблема заключается в \n в тексте, вам нужно убежать от нее \\n

var json = '{"query": "my schedule today","type": "timeline","title": "Today events:","time":["2015-07-06\\n20:30:00"],"summary":["Weekly meeting + Show & Tell (Hangout)"],"description":["Weekly Bullets (20 minutes): "]}'

console.log(JSON.parse(json))
snippet.log(JSON.stringify(JSON.parse(json)))
<!-- Provides the 'snippet' object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

Если строка, с которой вы работаете, является результатом внешнего вызова, и вы не можете вручную изменить \n на \\n, это можно сделать с помощью простой замены:

json = json.replace(/\\n/g, "\\\n");
  • 0
    jsfiddle.net/arunpjohny/jaskoy70
  • 0
    спасибо, но это не проблема "\ n". Я разместил данные в формате JSON, а не строку. Я попытался удалить это, и там была та же самая ошибка. Я думаю, что проблема в ключе "description", потому что он работал нормально, когда я удаляю последний пробел в "Weekly Bullets (20 минут)":
Показать ещё 1 комментарий
0

Здесь вы, \n токен в своей строке, удалите его:

var data = '{"query": "my schedule today","type": "timeline","title": "Today events:","time":["2015-07-06\n20:30:00"],"summary":["Weekly meeting + Show & Tell (Hangout)"],"description":["Weekly Bullets (20 minutes): "]}'.replace('\n', '');
var data = JSON.parse(data);
alert(data.query);

Надеюсь это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню