2017-02-16 10 views
0

単純なJSONオブジェクトを返すURLへのget要求を実行しています。ここでNode.jsのJSON.parse問題

はURLです:http://live.albiononline.com/status.txt

あなたはそれがテキストファイルであり、それはContent-Typeヘッダのテキスト/平野で見ることができるように。私は体がそれをログ受信すると、それは次のとおりです。

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

をしかし、私はログオンしようとすると、それは未定義であるbody.status。私はvar data = JSON.parse(body);その後、console.log(data.status);を行うと私が取得:

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

SyntaxError: Unexpected token in JSON at position 0 

任意のアイデア何が起こっていますか?私はそれが.txtファイルから引っ張っているという事実と関係があると思いますか?

UPDATE:出力が文字列化JSONオブジェクトではありませんので、

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

それはすでにJSONオブジェクトです。あなたは私の質問で – RaR

+0

を解析する必要はありません私は言った、 'しかし、私がログに記録しようとすると、body.statusは未定義です。 – TJH

+0

あなたのコードを一度表示することができます –

答えて

1

理由がある、それだけで通常の文字列です。

あなたの例のコードでの作業中に私が得た出力:

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

実際のJSON文字列に余分なスペースを持っているし、最後に文字をエスケープしないでしょう。

ソリューション:

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

Hmm。だから私はどのようにオブジェクトとしてそれを解析するのですか? – TJH

+0

これは答えです。JSON.parse()の前に\ r \ nを切り捨ててください。 –

+0

@TJH私の編集した回答を確認してください。 –

関連する問題