我正在尝试使用javascript解析一个大的json文件(240'000个字符)。我正在使用ajax从servlet中检索json数据。我正在使用的代码适用于较小的样本,但只是在xmlHttp.responseText包含大量json数据时将其抛出。
Uncaught SyntaxError: Unexpected token ILLEGAL
mycallbackFunction
xmlHttp.onreadystatechange
它表示意外的令牌在包含
的行上var data = eval('(' + xmlHttp.responseText + ')');
这是代码的要点:
getJsonData(mycallbackFunction, parameters);
function getJsonData(callbackFunction, parameters){
var xmlHttp = new XMLHttpRequest();
xmlHttp.open('GET', servlet_url + parameters, true);
xmlHttp.onreadystatechange = function(){
callbackFunction(xmlHttp);
}
xmlHttp.setRequestHeader('Content-Type', 'application/json');
xmlHttp.send(null);
}
function mycallbackFunction(xmlHttp){
var data = eval('(' + xmlHttp.responseText + ')');
}
使用eval()的方法是从xmlHttp.onreadystatechange调用的,如果这有任何区别的话。
我也尝试过使用json2.js得到相同的结果,它适用于较小的json样本,但是当我尝试使用我的240k字符文件时,它说:
Uncaught #<Object>
提前致谢。
答案 0 :(得分:1)
你应该使用
var data = JSON.parse( xmlHttp.responseText );
为了确保JSON解析器在没有提供JSON解析器( cough IE cough )的浏览器中可用,您应该包含Douglas Crockford的{{3}在你的页面之前的其他脚本。
如果解析器在您的数据上出错,您应该通过json2.js之类的内容验证JSON的问题。如果需要,您应该将数据分解为验证站点的较小块。
另外,为了确保您的JSON有效,您应该在服务器上使用正确的JSON序列化方法,而不是&#34;手动&#34;通过回声,打印等输出