无法在Javascript中将字符串转换为JSON

无法在Javascript中将字符串转换为JSON,javascript,json,Javascript,Json,我有一个JSON格式的字符串。我正在尝试迭代它。我已经验证了字符串是否为JSON。很好。但是,当我尝试迭代它时,它会抛出错误 这是我的 var string = '[{"id":7,"userId":"123","courseId":"C4","courseValue":"{\"color\": \"blue\",\"value\": \"#f00\"}"},{"id":8,"userId":"123","courseId":"C5","courseValue":"{\"color\": \"g

我有一个JSON格式的字符串。我正在尝试迭代它。我已经验证了字符串是否为JSON。很好。但是,当我尝试迭代它时,它会抛出错误

这是我的

var string = '[{"id":7,"userId":"123","courseId":"C4","courseValue":"{\"color\": \"blue\",\"value\": \"#f00\"}"},{"id":8,"userId":"123","courseId":"C5","courseValue":"{\"color\": \"green\",\"value\": \"#f00\"}"}]';
这是小提琴


您使用了一些JSON,并将其包装成
,试图将其变成JavaScript字符串文字

某些字符在JavaScript字符串文本中具有特殊含义(例如启动转义序列的
\
)。您未能在字符串中转义它们

因此,举一个例子:

"{\"color\":…
…当作为JavaScript字符串文本的一部分进行分析时,将变成:

"{"color":…
…这不是有效的JSON

您需要转义JavaScript字符串文字的特殊字符


更好的是,重新构造JSON,使其不包含编码为JSON的值。使用对象而不是包含表示对象的JSON的字符串。

我不确定是否要在courseValue中转义JSON。然而,嵌套对象的转义似乎是个问题。这很有效


值中有不需要的双字符串。更正的json字符串在这里

var string = '[{"id":7,"userId":"123","courseId":"C4","courseValue":{\"color\": \"blue\",\"value\": \"#f00\"}},{"id":8,"userId":"123","courseId":"C5","courseValue":{\"color\": \"green\",\"value\": \"#f00\"}}]';
试试这个:

var string = '[{"id":7,"userId":"123","courseId":"C4","courseValue":{"color": "blue","value": "#f00"}},{"id":8,"userId":"123","courseId":"C5","courseValue":{"color": "green","value": "#f00"}}]';

无需使用
包装对象,也无需转义对象

您需要的是:

var string = '[{"id":7,"userId":"123","courseId":"C4","courseValue":{"color": "blue","value": "#f00"}},{"id":8,"userId":"123","courseId":"C5","courseValue":{"color": "green","value": "#f00"}}]';

我现在该如何处理该字符串?我将向我的客户端获取相同的JSON对象该字符串的正确结构是什么?嘿,Sridhar,问题出在哪里?你将courseValue包含在不需要的双引号中。我删除了courseValue中的双引号,即“courseValue”:{“color\”而不是“courseValue”:{“color\”…是你逼我这么做的,我正忙着搬走那条不请自来的逃跑之路“。但是,这就是我在我的客户机上得到的。它肯定不会执行。无论谁在服务器上返回代码都是错误的。正如Omri Aharon所提到的,这是表示json的理想方式。如果此解决方案对您有效,请接受我的回答。请将代码放在此处以避免向下投票。链接会过时。”
var string = '[{"id":7,"userId":"123","courseId":"C4","courseValue":{"color": "blue","value": "#f00"}},{"id":8,"userId":"123","courseId":"C5","courseValue":{"color": "green","value": "#f00"}}]';