2017-02-16 1 views
0

J'effectue une requête get sur une URL qui renvoie un objet JSON simple.Problème JSON.parse dans Node.js

Voici l'URL: http://live.albiononline.com/status.txt

Comme vous pouvez le voir est un fichier texte et il est en-tête type de contenu est text/plain. Quand je reçois le Grumier, il est:

{ "status": "online", "message": "All good." }

Mais quand je tente de me connecter, body.status il est défini. Quand je fais var data = JSON.parse(body); puis console.log(data.status); je reçois:

undefined:1 
{ "status": "online", "message": "All good." } 
^ 

SyntaxError: Unexpected token in JSON at position 0 

Toute idée de ce qui se passe? Je suppose que cela a quelque chose à voir avec le fait qu'il tire d'un fichier. Txt?

MISE À JOUR:

request('http://live.albiononline.com/status.txt', function (error, response, body) { 
      if (!error && response.statusCode == 200) { 
       console.log(body); // { "status": "online", "message": "All good." } 
       console.log(body.status); // undefined 
      } 
     }); 
+0

Il est déjà l'objet JSON. Vous n'avez pas besoin d'analyser – RaR

+0

Dans ma question j'ai dit: 'Mais quand j'essaie de me connecter, body.status est indéfini'. – TJH

+0

pouvez-vous me montrer votre code une fois –

Répondre

1

La raison est que la sortie n'est pas un objet JSON de chaîne de caractères, il est juste une chaîne normale.

La sortie que je suis tout en travaillant sur votre code exemple:

'{ "status": "online", "message": "All good." }\r\n' 

Une chaîne JSON réelle ne serait pas des espaces supplémentaires et échapper à des personnages à la fin.

Solution:

x=x.trim(); // trimming off the \r\n 
var output = JSON.parse(x); // parsing the JSON 
+0

Hmm. Alors, comment puis-je l'analyser comme un objet? – TJH

+0

Ceci est la réponse, couper le \ r \ n avant JSON.parse() –

+0

@TJH vérifier ma réponse éditée –