簡體   English   中英

JavaScript / Node.js JSON.parse()未定義

[英]JavaScript/Node.js JSON.parse() Undefined

我收到錯誤:

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)

從搜索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;
    }

});

是什么原因造成的?

可能是sys.inspect的輸出不是JSON,而是添加了引號'

為什么使用sys.inspect

如果data是JSON字符串,則使用JSON.parse(data); 並且如果已經是一個object ,那么您根本不必使用JSON.parse ...

正如其他答案和注釋所指出的那樣,問題出在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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM