2016-03-15 113 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事件。
錯誤,而在最新的Chrome瀏覽器中測試,我越來越:

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

我想多事情來修復它,但似乎沒有任何工作。
每次我得到未定義的值錯誤。

基本上我想解析JSON對象並獲取值。
我在做什麼錯?

+1

'[{ 'ID': '123', '標題': 'XYZ', 'ID2': '456', '狀態' :2}]'不是一個有效的JSON .. – Rayon

+1

它應該在'雙'引號('''')例如:'[{「id」:「123」}]' – Rayon

+0

我給你的另一個提示是:不要使用'this',控制器和testMethod中的'this'指的是不同的東西,這會引起奇怪的問題,而是在控制器中使用'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\"}]"; 

你要麼需要使用'外或"之外,逃離裏面的引號。

這兩個鍵和值都需要在的引號中。

+0

作爲參考,請閱讀http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/ – cst1992

+0

哦,我不知道,那是爲了解釋。 – User7723337

+0

不客氣,當我第一次使用序列化時,我首先遇到了單引號和雙引號。我曾經也認爲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