【发布时间】:2018-03-21 08:41:27
【问题描述】:
以下 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+')') -- 由于某种原因没有转换,出于安全考虑也不太愿意使用此解决方案。
手动插入双引号分隔冒号 (:) 但我的一个 value,它是一个 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 + ')'));
【问题讨论】:
-
你从哪里得到字符串?我会从那里开始并尝试获取正确的 JSON。
-
var result = eval('('+str+')')应该可以正常工作 -
我正在从受信任的第三方提供的一个 html 文件中提取此字符串,他们不支持立即发送 json。
-
你能把你为此写的代码放上来,让我们知道哪里出了问题吗?
-
你说
[...]they can't support sending json immediately[...],但这是否意味着你对他们如何格式化该字符串没有任何影响?因为最简单的事情是他们将歌曲以适当的 JSON 格式存储在 HTML 文档中。
标签: javascript json regex parsing