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

时间:2016-03-22 07:57:17

标签: 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\": \"green\",\"value\": \"#f00\"}"}]';

这是小提琴

http://jsfiddle.net/hLkUz/40/

5 个答案:

答案 0 :(得分:1)

您已经使用了一些JSON并在其周围包裹'以尝试使其成为JavaScript字符串文字。

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

因此,举一个例子:

"{\"color\":…

...当作为JavaScript字符串文字的一部分进行解析时变为:

"{"color":…

......这不是有效的JSON。

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

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

答案 1 :(得分:0)

您在值中包含不需要的双字符串。更正了json字符串在这里

errors.txt

答案 2 :(得分:0)

试试这个:

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

答案 3 :(得分:0)

不需要使用"包装对象也不需要将其转义。

你需要的是:

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

Fiddle

答案 4 :(得分:-1)

我不确定你是否打算在courseValue中转义JSON。然而,似乎嵌套对象的转义是问题所在。这有效 http://jsbin.com/mekiwalidu/edit?js,console,output

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 obj = JSON.parse(string);
console.log(obj);