Javascript将字符串化的对象数组转换为对象数组

时间:2017-03-30 15:15:21

标签: javascript arrays json parsing

我有以下变量(通过HTTP响应给我,因此字符串):

var result = '[{name: "John"}, {name: "Alice"}, {name: "Lily"}]'

实际上有更多的对象,每个对象都有更多的属性,但你明白了。

尝试JSON.parse(result)时出现以下错误:

[{name: "John"}, {name: "Alice"}, {name: "Lily"}]
  ^

SyntaxError: Unexpected token n

如何将此字符串解析为javascript对象数组?

3 个答案:

答案 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;
});