2016-03-15 2 views
0

У меня есть Угловое обслуживание и в этой службе у меня есть код:JSON Синтаксический в AngularJS службы

this.testMethod = function() { 
    this.jsonTest = "[{'id':'123','title':'XYZ','id2':'456','status':2}]"; 
    this.parseTest(this.jsonTest); 
}; 

this.parseTest = function(jsonTest) { 
    var jsonTestObj = JSON.parse(jsonTest); // I get error hear 
} 

Метод испытаний является получение призвал ng-click события.
ошибка, я получаю во время тестирования в последней хром браузер:

SyntaxError: Unexpected token ' at Object.parse (native) 
...... 

Я попробовал несколько вещей, чтобы исправить это, но ничего не похоже на работу.
Каждый раз, когда я получаю неопределенное значение ошибки.

В принципе, я хочу проанализировать объект JSON и получить значения.
Что я делаю неправильно?

+1

'[{ 'ID': '123', 'название': 'XYZ', 'id2': '456', 'статус' : 2}] 'не является допустимым JSON .. – Rayon

+1

Он должен быть в' двойных' кавычках ('' ') .. ex:' [{"id": "123"}] ' – Rayon

+0

Еще один совет, который у меня для вас is: не используйте 'this'.' this' в контроллере и в 'testMethod' ссылаются на разные вещи. Это вызовет странные проблемы. Вместо этого используйте' var v = this' в контроллере и 'v.testMethod' и 'v.jsonTest'. Это гарантирует, что обе вещи относятся к одному и тому же' this'. – cst1992

ответ

2

Используйте этот

this.jsonTest = '[{"id":"123","title":"XYZ","id2":"456","status": "2"}]'; 

Или это

this.jsonTest = "[{\"id\":\"123\",\"title\":\"XYZ\",\"id2\":\"456\",\"status\": \"2\"}]"; 

Вам необходимо либо использовать ' снаружи или " снаружи и избежать кавычки внутри.

И ключ, и значение должны быть в double цитаты.

+0

Для справки, прочитайте http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/ – cst1992

+0

О, я не знал, что для объяснения. – User7723337

+0

Приветствую вас, я впервые наткнулся на сингл vs double quote, когда я впервые использовал сериализацию. Я тоже думал, что объекты javascript и json одинаковы. Но объекты json должны иметь кавычки. – cst1992

2

Вам нужно использовать двойные кавычки в своей строке, кроме того, что ваш код должен работать.

Цитирую specification

A value can be a string in double quotes, or a number, or true or false or null, or an object or an array. These structures can be nested.

-2

Ваш JSON недействителен. Всегда проверяйте целостность JSON в тех случаях, я персонально использовать

http://jsonlint.com/

+0

Ваш валидатор отмечает json в вопросе как действительный. Это не так. – cst1992

+0

не не: Ошибка: Ошибка синтаксического анализа на линии 1: [{\t 'ID': '123', \t «название ---^ Ожидая 'STRING', '}', получил 'неопределенными' – guiguiblitz

+0

Я получаю «действительный json» для всего: http://i.imgur.com/dEVu3fM.png Обратите внимание, что последнее «отсутствует». Даже тогда «не должно быть внутри. http://i.imgur.com/tI4qj1d.png Другой. – cst1992