我有以下变量(通过HTTP响应给我,因此字符串):
var result = '[{name: "John"}, {name: "Alice"}, {name: "Lily"}]'
实际上有更多的对象,每个对象都有更多的属性,但你明白了。
尝试JSON.parse(result)
时出现以下错误:
[{name: "John"}, {name: "Alice"}, {name: "Lily"}]
^
SyntaxError: Unexpected token n
如何将此字符串解析为javascript对象数组?
答案 0 :(得分:5)
这不是有效的JSON。为了使它成为有效的JSON,您需要在键周围加上引号(“name”)
[{"name": "John"}, {"name": "Alice"}, {"name": "Lily"}]
发生错误是因为解析器未点击"
而是点击n
。
答案 1 :(得分:0)
由于您的字符串无效JSON(它缺少属性键周围的引号),因此您无法使用JSON.parse
对其进行解析。如果您可以控制响应,则应将其更改为返回:
[{"name": "John"}, {"name": "Alice"}, {"name": "Lily"}]
<小时/>
var result = '[{"name": "John"}, {"name": "Alice"}, {"name": "Lily"}]'
console.log(JSON.parse(result))
.as-console-wrapper { min-height: 100%; }
答案 2 :(得分:0)
由于您的输入格式很严格,因此解析很简单。
function cutSides(s) { return s.substring(1, s.length - 1); }
var pairs = cutSides(result).split(', ');
var list_of_objects = pairs.map(function(s) {
var pair = cutSides(s).split(': ');
var result = {};
result[pair[0]] = cutSides(pair[1]);
return result;
});