2016-05-31 7 views
0

2番目の質問をJSONを入れ子になった、と私は、為替の値を返すAPIを使用して思わぬ障害のビットをヒットしました。私は、このJSONから現在AUD値を抽出する必要があります。ここではは、解析はまだ私の初めてのアプリに取り組ん日:)</p> <p>のノードで

{"base":"USD","date":"2016-05-30","rates":{"AUD":1.3919,"BGN":1.7558,"BRL":3.6043,"CAD":1.3039,"CHF":0.99273,"CNY":6.5817,"CZK":24.258,"DKK":6.6765,"GBP":0.68341,"HKD":7.7688,"HRK":6.7195,"HUF":281.72,"IDR":13645.0,"ILS":3.8466,"INR":67.139,"JPY":111.19,"KRW":1190.9,"MXN":18.473,"MYR":4.1175,"NOK":8.3513,"NZD":1.4924,"PHP":46.73,"PLN":3.9447,"RON":4.0428,"RUB":65.89,"SEK":8.3338,"SGD":1.3811,"THB":35.73,"TRY":2.9565,"ZAR":15.771,"EUR":0.89775}} 

は、私が使用していますコードです:

var http = require('http'); 
var options = { 
    host: 'api.fixer.io', 
    port: 80, 
    path: '/latest?base=USD', 
    method: 'GET' 
}; 

http.request(options, function(res) { 
    console.log('STATUS: ' + res.statusCode); 
    res.setEncoding('utf8'); 
    res.on('data', function (chunk) { 
    const json = JSON.parse(chunk); 
    rate = json.AUD; 
    console.log(rate); 
    }); 
}).end(); 

残念ながら、これは動作しません、と私はJSONがあるので、それがあると仮定します入れ子ですか?このネストされた文字列を正しく照会するにはどうすればよいですか?

また、私はチャンクの私の取り扱いを引き締める必要がある知っているが、それは今:)

ありがとう私のために赤ちゃんの手順です!

答えて

0

です。

"チャンク"は一度にすべてのデータではないため、一部のチャンクである可能性があります。つまり、有効なJSONではありません。 @huaoguoに述べたように

http.request(options, function(res) { 
    console.log('STATUS: ' + res.statusCode); 
    var data = ''; 
    res.setEncoding('utf8'); 
    res.on('data', function (chunk) { 
    data += chunk; 
    }); 
    res.on('end', function() { 
    const json = JSON.parse(data); 
    // As @huaoguo mentioned, it should be `json.rates.AUD`, not `json.AUD` 
    rate = json.rates.AUD; 
    console.log(rate); 
    }); 
}).end(); 

また、json.rates.AUD代わりにjson.AUDがあるべきです。

+0

@ahwayakchihありがとうございました、あなたの例を使ってチャンクが修正されました。 –

1

ないjson.AUD、それはあなたが最初の全体のデータを待つ、または(:https://github.com/dominictarr/JSONStreamなど)の代わりにストリーミングパーサのいずれかを使用する必要があり

json.rates.AUD 
+0

ありがとう@huaoguo!私は実際にそれを試みたが、それは失敗し続けた。一旦それがうまくいくことが確認されたら、もう一度見ました。私はレートを定義していなかった! –

関連する問題