javascript将字符串转换为对象数组

时间:2016-12-29 19:33:55

标签: javascript arrays

var string = "{lat: -31.563910, lng: 147.154312};{lat: -33.718234, lng: 150.363181};{lat: -33.727111, lng: 150.371124}"
var array = string.split(';');

结果:

var array = [
    "{lat: -31.563910, lng: 147.154312}",
    "{lat: -33.718234, lng: 150.363181}",
    "{lat: -33.727111, lng: 150.371124}"
  ]

尝试使用JSON.parse(array);但收到SyntaxError

我想要实现的数组看起来像这样:

var array = [
    {lat: -31.563910, lng: 147.154312},
    {lat: -33.718234, lng: 150.363181},
    {lat: -33.727111, lng: 150.371124}
  ]

2 个答案:

答案 0 :(得分:-1)

试试这个

string = string
  .replace(/lat/g, '"lat"')
  .replace(/lng/g, '"lng"')
  .replace(/;/g, ',')
JSON.parse('[' + string + ']')

这是如何运作的?

  • replace用于在密钥周围添加引号
  • replace用于将分号转换为逗号
  • 然后字符串被包装到[...]中,因此有效的json

正如评论中所提到的,如果该字符串格式正确的JSON,您可以简单地解析它。因此,如果您可以控制该字符串的生成方式,那么最好将其修复。

答案 1 :(得分:-2)

你快到了。您希望通过函数array运行JSON.parse()中的每个值以获取javascript值。

array[z] = JSON.parse(array[z]);

编辑:虽然您的json格式不正确。