2017-10-10 162 views
0

以下json字符串不会转换成json,因为key不在引号内。解析json字符串不带引号到json

{file:"http://video.test.com/media/myvideo.mp4", image:"/category/dt/filename.png", width:"100%", height:"100%", stretching:"uniform", autostart:true, modes:[{type:"flash", src:"/swf/external/player.swf"}, {type:"html5"}]} 

我曾尝试:

  1. JSON.parse - 它不工作,因为键不是引号内。 ('('+ str +')') - 由于某种原因没有转换,由于安全原因,这个解决方案也不太愿意。

  2. 手动插入双引号界定冒号(:)但我 价值,这是一个URL的一个,也有一个冒号,如解给出: regular expression add double quotes around values and keys in javascript

为什么很难将此字符串转换为json以及如何转换它?

var s = '{file:"http://video.test.com/media/myvideo.mp4", image:"/category/dt/filename.png", width:"100%", height:"100%", stretching:"uniform", autostart:true, modes:[{type:"flash", src:"/swf/external/player.swf"}, {type:"html5"}]}'; 
 

 
console.log(eval('(' + s + ')'));

+0

你从哪里得到字符串?我会从那里开始尝试获得正确的JSON。 –

+1

'var result = eval('('+ str +')')'应该可以正常工作 –

+0

我从一个可信任的第三方提供的html文件中提取这个字符串,他们不能立即支持发送json。 –

回答

0

的主要问题是真的你从哪里得到从字符串,但不管怎么说,这里是一个解决方案。

var obj = eval('(' + str + ')'); 
var json = JSON.stringify(obj); 
+1

或简单地'var obj = eval('('+ str +')');' –

+0

@JaromandaX我也这么认为,但是我接受了OP的话,因为它不起作用。 –

+0

但是......它确实......也许OP没有'var obj =':p –