Je suis en train d'analyser un grand fichier JSON (240'000 caractères) en utilisant javascript. J'utilise ajax pour récupérer les données json d'une servlet. Le code que j'utilise fonctionne bien avec des échantillons plus petits, mais jette juste cela quand xmlHttp.responseText contient beaucoup de données json.problème en utilisant l'analyse syntaxique grande JSON eval et alternatives
Uncaught SyntaxError: Unexpected token ILLEGAL
mycallbackFunction
xmlHttp.onreadystatechange
Il dit que le jeton inattendu est sur la ligne contenant
var data = eval('(' + xmlHttp.responseText + ')');
Tel est le sens du code:
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 + ')');
}
La méthode qui utilise eval() est appelée à partir xmlHttp.onreadystatechange si cela fait une différence.
J'ai aussi essayé d'utiliser json2.js et obtenir le même résultat, il fonctionne très bien avec des échantillons de JSON plus petits mais lorsque je tente avec mes 240K caractères fichier, il dit:
Uncaught #<Object>
Merci à l'avance.
Avez-vous essayé d'utiliser le natif du navigateur Capacités d'analyse JSON au lieu de 'eval()'? –
ne sera pas la taille qui est le problème - vous avez mal formé JSON quelque part. – BonyT
@BonyT fait un bon point. Est-ce que le JSON valide sur http://jsonlint.com? (S'il peut traiter 240k de données) –