我有一个包含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方法无法在此输入上运行?
答案 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添加到您的工作流程中。