Ошибка неожиданного символа 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"]