Javascript 将不带引号的json字符串解析为json

Javascript 将不带引号的json字符串解析为json,javascript,json,regex,parsing,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"}]}

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

  • eval(“(“+str+”)”)--出于某种原因不转换,出于安全考虑,也不太愿意使用此解决方案

  • 手动插入分隔冒号(:)的双引号,但我的 值(url)也有一个冒号,如解决方案中所示:

  • 为什么很难将这个字符串转换为json以及如何转换它

    var s='{file:http://video.test.com/media/myvideo.mp4,图像:“/category/dt/filename.png”,宽度:“100%”,高度:“100%”,拉伸:“统一”,自动启动:true,模式:[{type:“flash”,src:“/swf/external/player.swf”},{type:“html5”}]}”;
    
    日志(eval('('+s+'))主要的问题实际上是从哪里获得字符串的,但无论如何,这里有一个解决方案

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

    你从哪里弄到绳子的?我会从这里开始,并尝试获取正确的JSON。
    var result=eval(“(“+str+”)
    应该可以很好地工作。我正在从可信第三方提供的html文件中提取这个字符串,他们不支持立即发送JSON。你能把你为此编写的代码放进去吗,这样我们就可以知道出了什么问题吗?你说
    […]他们不支持立即发送json[…]
    ,但这是否意味着您对他们如何格式化该字符串没有任何影响?因为最简单的事情是,如果他们在HTML文档中以正确的JSON格式存储sing,或者干脆
    var obj=eval(“(“+str+”)”)@JaromandaX我也这么认为,但我接受了OP的说法,因为它不起作用。但是。。。它确实。。。也许OP没有
    var obj=
    :pyeah,它不起作用,它说'str'没有定义,即使它上面声明了,顺便说一句,我用带babel的ES6在reactjs代码中写这篇文章。我不确定这是否会阻止这种类型的编码。@Paragajadhav否您无法使用RegExp-reliable解析作为字符串或JSON给出的JavaScript对象。如果字符串因某些原因发生更改,并且包含一些意外内容,则RegExp可能会失败。