0

エラーが表示されます:

undefined:1
'{"completed_in":0.078,"max_id":333655176038719488,"max_id_str":"3336551760387
^
SyntaxError: Unexpected token '
    at Object.parse (native)
    at /home/tweets/10seconds.js:25:25
    at passBackControl (/home/tweets/node_modules/oauth/lib/oauth.js:367:11)
    at IncomingMessage.<anonymous> (/home/tweets/node_modules/oauth/lib/oauth.js:386:9)
    at IncomingMessage.EventEmitter.emit (events.js:117:20)
    at _stream_readable.js:895:16
    at process._tickCallback (node.js:415:13)

Search API から Twitter API JSON を解析する場合。

この JSON の解析に使用しているコードは次のとおりです。

MongoClient.connect("mongodb://localhost:27017/db", function(err, db) {

 if(err) { return console.dir(err); }
  var collection = db.collection("tweets");

    while(run < 200){

        oa.get("http://search.twitter.com/search.json?q=morning&rpp=100&include_entities=true&result_type=mixed", access_token, access_token_secret, function(error, data) {
            var theTweets = JSON.parse(sys.inspect(data));

           collection.insert(theTweets, {w:1}, function(err, result) {});
           console.log(run);
        });
    run = run + 1;
    }

});

何が原因でしょうか?

4

3 に答える 3

0

問題は、他の回答とコメントで既に述べたように、sys.inspect() 呼び出しにあります。

nodejs のドキュメント ( http://nodejs.org/api/util.html#util_util_inspect_object_options ) に記載されているとおり:

オブジェクトの文字列表現を返します。これはデバッグに役立ちます。

ちなみに、sysモジュール名をutilに変更したようです。

古いノード バージョンで次のコードを実行することにより、簡単に小規模なテストを行うことができます。エラーが発生するはずです:

var sys = require('sys');
var data = '{"test":1, "test2":2}';
sys.puts(JSON.parse(sys.inspect(data)));

次に、sys.inspect 呼び出しを削除します。オブジェクトを正しく解析する必要があります。

var sys = require('sys');
var data = '{"test":1, "test2":2}';
sys.puts(JSON.parse(data));
于 2013-05-12T19:41:05.487 に答える
0

おそらく、の出力sys.inspectは JSON ではなく、 quote を追加します'

于 2013-05-12T18:58:40.803 に答える
0

なぜあなたは使用していsys.inspectますか?

データが JSON 文字列の場合は使用JSON.parse(data);し、object既に使用している場合はまったく使用する必要はありませんJSON.parse...

于 2013-05-12T18:59:17.280 に答える