2012-02-25 16 views
2

私はこのコードをクライアント上にツイッターからJSONのストリームを取得することができるよ:解析JSON値

var command = 'curl -d @tracking https://stream.twitter.com/1/statuses/filter.json -uUsername:Password' 

http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 

    child = exec(command); 

    child.stdout.on('data', function(data) { 

    res.write(data); 

    }); 

}).listen(1337, "127.0.0.1"); 

が、私は「テキスト」か」を取得することはできませんid 'の値をJSONから取得します。私は、このようなこのようなコードとしてjQueryのparsJSON()、および他のものを使用して試してみた: ':オブジェクトオブジェクトの

var command = 'curl -d @tracking https://stream.twitter.com/1/statuses/filter.json -uUsername:password' 

http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 

    child = exec(command); 

    child.stdout.on('data', function(data) { 

    for (i=0; i<data.length; i++) { 
    reduceJSON = data[i]["text"] 
    stringJSON = String(reduceJSON) 
    res.write(stringJSON); 
} 

}); 

}).listen(1337, "127.0.0.1"); 

私は「未定義」または「readyStatesetRequestHeadergetAllResponseHeadersgetResponseHeader」またはのストリームを取得しておきます。誰もが個々の値を取得する方法を知っていますか?

+0

なぜノード要求ライブラリの代わりにCURLとexecを使用していますか? – loganfsmyth

答えて

4

短い答えはdataがJSONではなく文字列であることです。 childが 'end'を出力するまで、すべてのデータをバッファリングする必要があります。終了後、JSON.parseを使用してデータをJavaScriptオブジェクトに変換する必要があります。

つまり、しばらくの間、別のcURLプロセスを使用することは意味がありません。

var request = require('request'); 
var http = require('http'); 

http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 

    var r = request.post(
    'https://stream.twitter.com/1/statuses/filter.json', 
    { auth: "Username:Password", 'body': "track=1,2,3,4" }, 
    function(err, response, body) { 
     var values = JSON.parse(body); 

     console.log(values); 

    } 
); 
    r.end(); 
}).listen(1337, "127.0.0.1"); 

は、それはかなりの仕事をしないのなら、私を知ってみましょう:私はrequestモジュールを使用して、このような何かをするだろう。私は明らかにユーザーやパスワードを持っていないので、私はそれをテストすることはできません。

+0

お返事ありがとうございます。そのリクエストにはメソッド 'end'がありません。おそらく応答は連続的なストリームなので、おそらく? .end()を削除すると、正常な応答が返されますが、最初の中かっこはエラー{'retweet_count":0、 "favorited":false、 "text": "Cumbrian Pubは現金で入金できます ^ SyntaxError:予期せぬトークン{'だからおそらく第三者を使用しますが、それはノードの学習には役立ちません – EHNole

+0

' end'ビットはタイプミスです。まだ100%あなたがそれを必要としているとは確信していませんが、解析は、 'body'を出力して、それがすべて有効なJSONかどうかを確認してください。 – loganfsmyth