Erreur d'exécution node.js et json
Je suis en utilisant node.js et d'essayer de parser le JSON corps d'une demande.
J'obtiens l'erreur suivante:
undefined:0
^
SyntaxError: Unexpected end of input
at Object.parse (native)
at IncomingMessage.<anonymous> (C:\node\xxxx.js:36:14)
at IncomingMessage.emit (events.js:64:17)
at HTTPParser.parserOnMessageComplete [as onMessageComplete] (http.js:130:23)
at Socket.ondata (http.js:1506:22)
at TCP.onread (net.js:374:27)
Je suis en train de faire:
request.on('data', function(chunk)
{
data+=chunk;
});
//and in the end I am doing
obj = JSON.parse(data); //it's complaining at this point.
d'entrée est:
{
"result": "success",
"source": "chat"
}
source d'informationauteur The Learner
Vous devez vous connecter pour publier un commentaire.
Vous êtes en train d'analyser les données avant il est complètement reçu...mettez votre JSON.analyser à l'intérieur de l' .fin de la méthode de demande
Avec votre edit: où dans votre code faites-vous JSON.analyser? Rappelez-vous que la demande.sur est asynchrone; vous ne pouvez pas appeler
JSON.parse
jusqu'à ce que les données (request.on('end')
)... si vous êtes juste de l'appeler à côté, alors vous êtes susceptible d'appel avant que les données sont arrivées.E. g.
mais
ne sera pas, parce que le JSON.analyser obtiendrez probablement appelée avant tout
'data'
rappels de feu."Fin inattendue de l'entrée" est le message d'erreur que vous aurez à partir de tentative d'analyser une chaîne vide ou incomplet chaîne JSON:
De sorte qu'il ressemble à votre source de données n'est pas fiable. La bonne façon de gérer cela est de retourner un 400 gamme de réponse pour le client si/lorsque le JSON.parse() étape échoue.