Javascript AngularJS服务中的JSON解析

Javascript AngularJS服务中的JSON解析,javascript,angularjs,json,Javascript,Angularjs,Json,我有角度服务,在该服务中我有一个代码: 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); //

我有角度服务,在该服务中我有一个代码:

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对象并获取值。

我做错了什么

您需要在字符串中使用双引号,而不是代码应该可以工作

引自

值可以是双引号中的字符串、数字、true或false或null、对象或数组。这些结构可以嵌套


您需要在字符串中使用双引号,而不是代码应该可以工作

引自

值可以是双引号中的字符串、数字、true或false或null、对象或数组。这些结构可以嵌套

用这个

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

this.jsonTest = "[{\"id\":\"123\",\"title\":\"XYZ\",\"id2\":\"456\",\"status\": \"2\"}]";
您需要在外部使用
,或者在外部使用
并转义内部的引号

键和值都需要在双引号中。

使用此选项

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

this.jsonTest = "[{\"id\":\"123\",\"title\":\"XYZ\",\"id2\":\"456\",\"status\": \"2\"}]";
您需要在外部使用
,或者在外部使用
并转义内部的引号


键和值都必须使用双引号。

您的JSON无效。在这些情况下,请始终检查您的JSON完整性,我个人使用


您的JSON无效。在这些情况下,请始终检查您的JSON完整性,我个人使用



[{'id':'123','title':'XYZ','id2':'456','status':2}]
不是有效的JSON。它应该在
双引号(
)…例如:
[{'id:“123}]
我给你的另一个建议是:不要在controller和
testMethod
中使用
this
。在controller和
testMethod
中使用
this
。这将导致奇怪的问题。相反,在controller中使用
var v=this
,以及
v.jsonTest
。这将保证这两种方法都引用了o相同的
这个
。感谢您的建议,
var myfoo=function(){…}
function myfoo(){…}
两者之间有什么区别?为什么使用
v.testMethod()
方式很好,请解释。
[{'id':'123','title':'XYZ和'id2':'456','status':2}]
不是有效的JSON。它应该在
双引号(
)…例如:
[{“id:“123”}]
我给你的另一个提示是:不要使用
这个
。控制器中的
this
testMethod中的
表示不同的内容。这将导致奇怪的问题。相反,在控制器中使用
var v=this
,以及
v.testMethod
v.jsonTest
。这将保证这两个东西引用相同的
This
。感谢您的建议,
var myfoo=function(){…}
function myfoo(){…}
之间的区别是什么?为什么使用
v.testMethod()
方法很好,请解释。作为参考,请阅读“哦,我不知道这一点”作为解释。不客气,我第一次遇到单引号和双引号的事情是在我自己第一次使用序列化时。我过去也认为javascript和json对象是相同的。但是json对象必须有引号。作为参考,请阅读我不知道的解释。不客气,我第一次遇到单引号和双引号的事情是在我自己第一次使用序列化时。我过去也认为javascript和json对象是相同的。但是json对象必须有引号。您的验证器将问题中的json标记为有效。不是这样的。不是这样的:错误:第1行上的解析错误:[{'id':'123','title-^应为'STRING','}',得到'undefined',我得到的是所有内容的'valid json':注意,最后一个'丢失了。即使这样,'也不应该在里面。另一个。在json中,您必须使用双引号(“)…单引号('))是无效字符…如果要使用单引号,则必须对其进行转义。验证器将问题中的json标记为有效。事实并非如此。不是这样:错误:第1行的分析错误:[{id':'123','title---^应为'STRING','},得到“undefined”我得到的是“valid json”:请注意,最后一个“已丢失。即使如此,”,也不应在其中。另一个。在json中,必须使用双引号(“)…单引号(”)是无效字符…如果要使用单引号,必须对其进行转义。