什么是在javascript中修复此JSON对象字符串的最简洁方法?

时间:2015-04-02 03:12:06

标签: javascript json

我正在进行一些网站抓取,现在,我发现这个JSON对象的字符串

{ "results" : [

    {
        id: 775664,
        status: "In-Stock",
        ffmtCenterId: '10601',
        altText: "In-Stock",
        qty: 6
    }

]}

并且我不想使用JSON.parse()将其转换为对象,但这不起作用,因为存在语法错误,例如您需要围绕键值引用。我试过了eval(),但它没有用。

有谁知道什么是修复此字符串的好方法,以便我可以将其转换为对象?

谢谢

3 个答案:

答案 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错误。