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

结果:的JavaScript字符串转换为对象数组中

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} 
    ] 
+5

如果你想使用'JSON.parse',你需要用''包装钥匙' – pwolaq

+4

这个'string'来自哪里?你能回到它的源代码并且把它作为一个合适的JSON字符串吗? –

+3

重点是:如果该字符串格式正确,那么可以简单地执行'var array = JSON.parse(string);'并且完成。如果你能控制字符串的生成方式,那么你可能需要格式化 –

回答

-2

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

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

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

-1

试试这个

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

这是如何工作的?

  • replace用于添加围绕键
  • replace引号用于打开分号成逗号
  • 然后串被包装成[...],从而有效的JSON

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

+0

使用正则表达式3次和JSON.parse事后并不是最佳解决方案 – pwolaq

+0

@pwolaq它非常易读,不需要过早优化,即使如此,即使这样,使用3个正则表达式与字符串文字确实比一个正则表达式更有效在替换函数中使用字符串操作 – akuhn

+0

你可以用一个正则表达式实现op的目标,并且不需要J SON.parse – pwolaq

相关问题