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

Ala*_*ani 5 javascript regex parsing json

由于键不在引号内,因此以下 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"}]}
Run Code Online (Sandbox Code Playgroud)

我试过了:

  1. JSON.parse - 它不起作用,因为键不在引号内。

  2. eval('('+str+')') -- 由于某种原因没有转换,由于安全性,也很少不情愿这个解决方案。

  3. 手动插入分隔冒号 (:) 的双引号,但我的值之一,即 url,也有一个冒号,如解决方案中所述: 正则表达式在 javascript 中的值和键周围添加双引号

为什么这个字符串转换成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"}]}
Run Code Online (Sandbox Code Playgroud)

Gha*_*san 5

主要问题实际上是您从哪里获得字符串,但无论如何,这是一个解决方案。

var obj = eval('(' + str + ')');
var json = JSON.stringify(obj);
Run Code Online (Sandbox Code Playgroud)