2016-03-15 86 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