解析json字符串不带引号到json
以下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"}]}
我曾尝试:
JSON.parse - 它不工作,因为键不是引号内。 ('('+ str +')') - 由于某种原因没有转换,由于安全原因,这个解决方案也不太愿意。
手动插入双引号界定冒号(:)但我 价值,这是一个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 + ')'));
的主要问题是真的你从哪里得到从字符串,但不管怎么说,这里是一个解决方案。
var obj = eval('(' + str + ')');
var json = JSON.stringify(obj);
或简单地'var obj = eval('('+ str +')');' –
@JaromandaX我也这么认为,但是我接受了OP的话,因为它不起作用。 –
但是......它确实......也许OP没有'var obj =':p –
你从哪里得到字符串?我会从那里开始尝试获得正确的JSON。 –
'var result = eval('('+ str +')')'应该可以正常工作 –
我从一个可信任的第三方提供的html文件中提取这个字符串,他们不能立即支持发送json。 –