2016-05-31 2 views
1

でAPIクエリから返されたJSONのアイテムを検索しています。私はNodeの最初の小さな旅に入り、最初の小さなアプリを書いています。私はmarkitondemand.comから株式コードを照会して、現在の株価を返したいと思います。私はクエリと応答が正常に動作しているが、私は現在の価格だけを抽出するために返されたデータを並べ替える方法を考えることができません。ここで私が実行しているコードは次のとおりです。ノード

var http = require('http'); 
var options = { 
    host: 'dev.markitondemand.com', 
    port: 80, 
    path: '/MODApis/Api/v2/Quote/jsonp?symbol=AAPL&callback=myFunction', 
    method: 'GET' 
}; 

http.request(options, function(res) { 
    console.log('STATUS: ' + res.statusCode); 
    res.setEncoding('utf8'); 
    res.on('data', function (chunk) { 
    console.log(chunk);  
    }); 
}).end(); 

これは、私は、サーバーから戻って受信データである:

myFunction({"Status":"SUCCESS","Name":"Apple Inc","Symbol":"AAPL","LastPrice":100.33,"Change":-0.0799999999999983,"ChangePercent":-0.0796733393088321,"Timestamp":"Fri May 27 15:59:00 UTC-04:00 2016","MSDate":42517.6659722222,"MarketCap":549550050250,"Volume":3169443,"ChangeYTD":105.26,"ChangePercentYTD":-4.68364050921528,"High":100.47,"Low":99.26,"Open":99.49}) 

私は「LastPrice」から100.33を抽出するために、この全体を検索するにはどうすればよい:100.33キーの値のペア?私は.filtersメソッドを使用することを考えましたが、返されるのは適切にフォーマットされた配列であるとは思われません。

ありがとうございました!

+0

応答が終了したことを確認せずに直接チャンクを使用することは危険です。 [The doc](https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/)では、代替案を説明し、提供しています。 – coyotte508

答えて

4

jsonpの代わりにJSONをリクエストしてください。そうすればJSON.parseを使うことができます。 jsonpは、CORSポリシーを回避しようとするブラウザ向けに設計されています。サーバーを実行しているので、そのようなことを心配する必要はありません。

URL(予告/JSONの代わりに、/JSONP?):

http://dev.markitondemand.com/MODApis/Api/v2/Quote/json?symbol=AAPL 

CODE:

const json = JSON.parse(chunk); 
console.log(json.LastPrice); 

SIDE注:

そのAPIは、チャンクJSONを送信した場合解析する前にチャンクを蓄積する必要があるかもしれません。何かが好きです:

let data = ''; 

    res.on('data', function (chunk) { 
    data += chunk; 
    }); 

    res.on('end', function() { 
    const json = JSON.parse(data); 
    console.log(json.LastPrice); 
    }); 
+0

これは、javascript 'a = {" abc ":1、" def ":2}'が 'a.abc'や' a ["abc"] 'を実行できるオブジェクトであるためです。 – coyotte508

+0

完璧に動作します、ありがとうございます!私はあなた自身とcoyotte508によって提案されたようにチャンクをどのように扱うかを見ていきます。再度、感謝します! –