2016-08-30 17 views
-1

私はこれを動作させようとしていますが、なぜそれがうまくいかないのかわかりません。nodejsのapiからJSONデータを解析できません

//require the poloniex library 
 
var plnx; 
 
var currenciesJSON; 
 
if (plnx = require('plnx')){ 
 
    console.log("Poloniex library intialized."); 
 
} 
 
// 
 

 
a = 0; 
 
setInterval(function() { intervalFunction() }, 1000); 
 

 

 
function intervalFunction(){ 
 

 
    plnx.returnCurrencies({}, function(err, data) { 
 
    currenciesJSON = data; 
 
    console.log(err); 
 
    console.log(currenciesJSON); 
 

 
    }); 
 

 
    var currenciesOBJ = JSON.parse(currenciesJSON); 
 

 
    a++; 
 
    console.log("Check #"+a+" complete."); 
 
}

私は次のエラーを取得しています:

[nodemon] starting `node main.js` 
Poloniex library intialized. 
undefined:1 
undefined 
^ 
SyntaxError: Unexpected token u 

at Object.parse (native) 
at intervalFunction (E:\CODING\nodejs\main.js:22:28) 
at null.<anonymous> (E:\CODING\nodejs\main.js:10:26) 
at wrapper [as _onTimeout] (timers.js:265:14) 
at Timer.listOnTimeout (timers.js:110:15) 

[nodemon] app crashed - waiting for file changes before starting... 
+0

あなたが受け取ったJsonは有効ですか?結果console.log(currenciesJSON)を取得し、www.jsonlint.comに入れて –

+0

を検証します。あなたの '' currenciesJSON''に無効なJSON文字列が含まれているようです。 – mdziekon

+0

currenciesJSONは、その値が非同期コールバック内で設定されているため、未定義です。あなたの 'currenciesObj = JSON.parse(currenciesJSON); a ++; console.log(...)'をコールバックの中に入れてください。 – ant

答えて

1

あなたはそれが割り当てられる前に、変数の値を解析しようとしています。 plnx.returnCurrencies()は非同期であるので、

var currenciesOBJ = JSON.parse(currenciesJSON) 

は(最初に)と同等であろう

var currenciesOBJ = JSON.parse(undefined) 

に相当するであろう(これは強制を入力する)、したがって

var currenciesOBJ = JSON.parse('undefined') 

程度にSyntaxErrorエラー文字'u'

これは、b plnx.returnCurrencies()コールバックが少なくとも1回呼び出されるまでは、currenciesJSONが定義されるため、問題が発生します。

関連する問題