Ошибка неожиданного символа JSON.parse
Я получаю эту ошибку:
JSON.parse: неожиданный символ
когда я запускаю этот оператор в firebug:
JSON.parse({"balance":0,"count":0,"time":1323973673061,"firstname":"howard","userId":5383,"localid":1,"freeExpiration":0,"status":false});
Почему так? Строка JSON кажется мне верной, и я также тестировал ее с помощью JSHint. Прошедшим объектом в приведенном выше случае является ответ сервера с типом контента, установленным на application/json
Ответы
Ответ 1
Вы не разбираете строку, вы разбираете уже обработанный объект:)
var obj1 = JSON.parse('{"creditBalance":0,...,"starStatus":false}');
// ^ ^
// if you want to parse, the input should be a string
var obj2 = {"creditBalance":0,...,"starStatus":false};
// or just use it directly.
Ответ 2
Вы можете убедиться, что рассматриваемый объект является строковым, прежде чем передавать его в функцию анализа, просто используя JSON.stringify()
.
Обновил свою строку ниже,
JSON.parse(JSON.stringify({"balance":0,"count":0,"time":1323973673061,"firstname":"howard","userId":5383,"localid":1,"freeExpiration":0,"status":false}));
или если у вас есть JSON, хранящийся в некоторой переменной:
JSON.parse(JSON.stringify(yourJSONobject));
Ответ 3
Если строка JSON с сервера верна,
Проверьте следующие три точки,
- Проверьте URL-адрес GetJSON или любой другой вызов Ajax.
- Убедитесь, что строка, dataType: "json" в вашем вызове ajax
- Проверьте, правильно ли вы загрузили файл jQuery.
Ответ 4
Так как это самая популярная публикация о unexpected token '
ошибке unexpected token '
, я включил ее сюда, чтобы помочь тем, кто наткнулся (как и я) на этой странице, пытаясь ее решить.Это не ответ на сам вопрос, а скорее возможная причина сообщения об ошибке, полученного Кришной.
Неожиданный токен в JSON
Помните, что JSON.parse
выдаст исключение, если ваша строка содержит одинарные вместо двойных кавычек.
Простой обходной путь - использовать некоторые регулярные выражения для замены их на кавычки, например:
function stringToArray(items) {
return JSON.parse(items.replace(/'/g, '"'));
} // "['0', '1']" -> ["0", "1"]