将没有引号的json字符串解析为json

时间:2017-10-10 03:43:45

标签: javascript json regex parsing

以下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 - 它不起作用,因为键不在引号内。

  2. eval('('+ str +')') - 由于某些原因没有转换,由于安全性,对此解决方案也不太感兴趣。

  3. 手动插入双引号分隔冒号(:)但我的一个 value,这是一个url,也有一个冒号,如解决方案中给出的: regular expression add double quotes around values and keys in javascript

  4. 为什么难以将此字符串转换为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 + ')'));

1 个答案:

答案 0 :(得分:1)

主要问题是你从哪里得到字符串,但无论如何,这是一个解决方案。

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