Javascript JSON.Parse方法在干净的json数据上失败 - 语法错误意外令牌

时间:2013-09-04 14:57:13

标签: javascript json parsing

我有一个包含json节点的js文件。这个文件被读入我的程序,变成一个字符串,然后我运行JSON.parse:

var client = new XMLHttpRequest();
client.open('GET', 'data/data.js');

//when the file has been loaded, this will execute 
client.onreadystatechange = function() 
{
    if(client.responseText != "")
    {
        ScanText(client.responseText);
    }
}
function ScanText(text)
{
    var json;
    try
    {
        var cleanedText = text;
        cleanedText = cleanedText.replace('Var', '');
        cleanedText = cleanedText.replace('arrayName', '');
        cleanedText = cleanedText.replace('=','')

        alert(cleanedText);
        json = JSON.parse(cleanedText);  //Issue happens here
        alert('try');
    }
    catch (ex)
    {
        alert(ex);
    }   
}

我的数据文件如下:

[

{
AollName:'YUI678',
Contract:'123-33'
},
{
TollName:'YUI678',
Contract:'123-33'
}
]

我收到错误'语法错误:意外的令牌A',它来自第一个节点AollName。

为什么json.parse方法无法在此输入上运行?

2 个答案:

答案 0 :(得分:2)

您的文件不包含有效的JSON

必须引用JSON键,字符串值必须使用双引号。仅仅因为它可能作为有效的JavaScript对象执行,并不意味着它是有效的JSON(数据交换格式)。

[
    {
        "AollName": "YUI678",
        "Contract": "123-33"
    },
    {
        "TollName": "YUI678",
        "Contract": "123-33"
    }
]

是有效的。

答案 1 :(得分:2)

您使用的是无效的JSON。字符串需要用双引号括起来:

[
    {
        "AollName": "YUI678",
        "Contract": "123-33"
    },
    {
        "TollName": "YUI678",
        "Contract": "123-33"
    }
]

JSONLint添加到您的工作流程中。