-3

我有一个包含 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'
}
]

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

为什么 json.parse 方法不能在这个输入上运行?

4

2 回答 2

2

您的文件不包含有效的JSON

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

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

将是有效的。

于 2013-09-04T14:59:21.207 回答
2

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

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

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

于 2013-09-04T15:00:43.303 回答