我正在进行一些网站抓取,现在,我发现这个JSON对象的字符串
{ "results" : [
{
id: 775664,
status: "In-Stock",
ffmtCenterId: '10601',
altText: "In-Stock",
qty: 6
}
]}
并且我不想使用JSON.parse()
将其转换为对象,但这不起作用,因为存在语法错误,例如您需要围绕键值引用。我试过了eval()
,但它没有用。
有谁知道什么是修复此字符串的好方法,以便我可以将其转换为对象?
谢谢
答案 0 :(得分:2)
你是如何尝试eval()
的?
eval("var a = " + incoming_string);
var fixed = JSON.stringify(a);
a
是对象,我认为您不需要fixed
字符串。
当然,eval一个未知的字符串是不安全的。
答案 1 :(得分:1)
hjson项目似乎是一种可能的解决方案。他们的在线转换器设法将您破碎的结构解析为适当的JSON,尽管转换中似乎存在一些怪癖。
答案 2 :(得分:0)
虽然我看到你评论说你已经找到了一个修复程序,但这里有一个双replace()
作为多行字符串处理此示例:
var a = `{ "results" : [
{
id: 775664,
status: "In-Stock",
ffmtCenterId: '10601',
altText: "In-Stock",
qty: 6
}
]}`
var b = a.replace(/(\w+)(: )/g, "\"$1\" $2" ).replace(/(:\s+)['](\w+)['](,\n)/g, "$1\"$2\"$3" )
var jo = JSON.parse( b )
没有第二个replace()
,我在ffmtCenterId
数据上的Firebug中收到了JSON.parse错误。