我有一个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\"}"}]';
这是小提琴
答案 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"}}]';
答案 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);