Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript/Node.JSON.parse()未定义_Javascript_Json_Node.js_Twitter - Fatal编程技术网

JavaScript/Node.JSON.parse()未定义

JavaScript/Node.JSON.parse()未定义,javascript,json,node.js,twitter,Javascript,Json,Node.js,Twitter,我收到错误信息: 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_module

我收到错误信息:

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)
未定义:1
{“已完成”:0.078,“最大id”:333655176038719488,“最大id”街:“333655176038787”
^
SyntaxError:意外标记'
at Object.parse(本机)
at/home/tweets/10seconds.js:25:25
在passBackControl(/home/tweets/node_modules/oauth/lib/oauth.js:367:11)
在输入消息时。(/home/tweets/node_modules/oauth/lib/oauth.js:386:9)
在IncomingMessage.EventEmitter.emit(events.js:117:20)
at_stream_readable.js:895:16
在进程中调用(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;
    }

});
MongoClient.connect(“mongodb://localhost:27017/db,函数(err,db){
if(err){return console.dir(err);}
var collection=db.collection(“tweets”);
同时(运行<200){
oa.get(“http://search.twitter.com/search.json?q=morning&rpp=100&include_entities=true&result_type=mixed,访问令牌,访问令牌,密钥,函数(错误,数据){
var theTweets=JSON.parse(sys.inspect(data));
insert(theTweets,{w:1},函数(err,result){});
console.log(运行);
});
运行=运行+1;
}
});

可能是什么原因造成的?

可能是,sys.inspect的输出不是JSON,而是添加了引号
为什么要使用
sys.inspect


如果数据是一个JSON字符串,那么使用
JSON.parse(data);
如果它已经是一个
对象,那么您根本不必使用
JSON.parse

正如其他答案和注释所述,问题在于sys.inspect()调用

正如nodejs文档()中所述:

返回对象的字符串表示形式,这对调试很有用

顺便说一句,他们似乎将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));

为什么
sys.inspect()
ing
data
?我希望
data
是JSON,所以你应该只
JSON.parse(data)
,或者它已经是一个原生JS对象,所以你根本不需要解析它。@MattBall,嘿…几乎相同的消息=P