Java 如何将从Twitter接收的数据存储到MongoDb中?

Java 如何将从Twitter接收的数据存储到MongoDb中?,java,mongodb,twitter4j,Java,Mongodb,Twitter4j,我正在从twitter检索数据并将其存储在列表中。当尝试将其存储到MongoDb时,我收到了错误消息。 无法将“主”线程twitter4j.ResponseListImpl中的异常转换为com.mongodb.BasicDBObject import java.net.UnknownHostException; import java.util.List; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mo

我正在从twitter检索数据并将其存储在列表中。当尝试将其存储到MongoDb时,我收到了错误消息。 无法将“主”线程twitter4j.ResponseListImpl中的异常转换为com.mongodb.BasicDBObject

import java.net.UnknownHostException;
import java.util.List;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.Mongo;
import com.mongodb.MongoException;

import twitter4j.ResponseList;
import twitter4j.Status;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.conf.ConfigurationBuilder;

public class SampleTwitter_data {
    public static void main(String[] args) throws TwitterException, UnknownHostException, MongoException {
    ConfigurationBuilder cofigurationBuilder =new ConfigurationBuilder();
    cofigurationBuilder.setDebugEnabled(true)
        .setOAuthConsumerKey("----------")
        .setOAuthConsumerSecret("----------")
        .setOAuthAccessToken("----------")
        .setOAuthAccessTokenSecret("----------");

     /**** Connect to MongoDB ****/
    Mongo mongo = new Mongo("localhost", 27017);


    /**** Get database ****/
    // if database doesn't exists, MongoDB will create it for you
    DB db = mongo.getDB("mydb");

    /**** Get collection / table from 'sample' ****/
    // if collection doesn't exists, MongoDB will create it for you
    DBCollection table = db.getCollection("sample");

    /**** Getting Data From Twitter time line ****/
    TwitterFactory tf = new TwitterFactory(cofigurationBuilder.build());
    twitter4j.Twitter twitter=tf.getInstance();
      ResponseList<Status> status= twitter.getHomeTimeline();
      for(Status s:status)
      {
          /**** here i'm getting error****/

          BasicDBObject document = new BasicDBObject();
          document=(BasicDBObject) status;
            table.insert(document);

            /**** just to make sure that i'm retrieving data from Twitter ****/
     System.out.println(s.getId()+s.getUser().getName()+"      "+s.getText());

      }
    }

}
import java.net.UnknownHostException;
导入java.util.List;
导入com.mongodb.BasicDBObject;
导入com.mongodb.DB;
导入com.mongodb.DBCollection;
导入com.mongodb.Mongo;
导入com.mongodb.MongoException;
导入twitter4j.ResponseList;
导入twitter4j.状态;
导入twitter4j.TwitterException;
导入twitter4j.TwitterFactory;
导入twitter4j.conf.ConfigurationBuilder;
公共类抽样数据{
公共静态void main(字符串[]args)抛出TwitterException、UnknownHostException、MongoException{
ConfigurationBuilder cofigurationBuilder=新的ConfigurationBuilder();
cofigurationBuilder.setDebugEnabled(true)
.setOAuthConsumerKey(“------------”)
.SetOAuthConsumerCret(------------)
.setOAuthAccessToken(------------)
.setOAuthAccessTokenSecret(------------);
/****连接到MongoDB****/
Mongo Mongo=新的Mongo(“本地主机”,27017);
/****获取数据库****/
//若数据库不存在,MongoDB将为您创建它
DB=mongo.getDB(“mydb”);
/****从“样本”获取集合/表格****/
//如果集合不存在,MongoDB将为您创建它
DBCollection table=db.getCollection(“示例”);
/****从Twitter时间线获取数据****/
TwitterFactory tf=新的TwitterFactory(cofigurationBuilder.build());
twitter4j.Twitter=tf.getInstance();
ResponseList status=twitter.getHomeTimeline();
对于(状态s:状态)
{
/****这是我的错误****/
BasicDBObject文档=新的BasicDBObject();
文档=(基本对象)状态;
表.插入(文件);
/****只是为了确保我正在从Twitter检索数据****/
System.out.println(s.getId()+s.getUser().getName()+“”+s.getText());
}
}
}

Twitter4j的状态不是Json,您应该首先转换它

cofigurationBuilder
上,必须将JSONStoreEnabled设置为true

        cb.setDebugEnabled(true).setOAuthConsumerKey(consumer_key")
                .setOAuthConsumerSecret("consumer_key_secret")
                .setOAuthAccessToken("access_token")
                .setOAuthAccessTokenSecret("access_token_secret")
                .setJSONStoreEnabled(true);
而不是

 BasicDBObject document = new BasicDBObject();
 document=(BasicDBObject) status;
您需要从status创建Json,并使用mongo解析它

                String json = TwitterObjectFactory.getRawJSON(status);
                DBObject dbObject = (DBObject) JSON.parse(json);
                collection.insert(dbObject);

Twitter4j中的
Status
不是Json,您应该首先转换它

cofigurationBuilder
上,必须将JSONStoreEnabled设置为true

        cb.setDebugEnabled(true).setOAuthConsumerKey(consumer_key")
                .setOAuthConsumerSecret("consumer_key_secret")
                .setOAuthAccessToken("access_token")
                .setOAuthAccessTokenSecret("access_token_secret")
                .setJSONStoreEnabled(true);
而不是

 BasicDBObject document = new BasicDBObject();
 document=(BasicDBObject) status;
您需要从status创建Json,并使用mongo解析它

                String json = TwitterObjectFactory.getRawJSON(status);
                DBObject dbObject = (DBObject) JSON.parse(json);
                collection.insert(dbObject);

编辑
configurationBuilder
getting error BasicBonsList后,它只能使用数字键,而不能:[\u id]
String json=TwitterObjectFactory.getRawJSON(状态);DBObject DBObject=(DBObject)JSON.parse(JSON);collection.insert(dbObject)\此处插入集合时出现错误。集合是DBCollection,必须对其进行初始化。编辑
configurationBuilder
getting error BasicOnList后查看此页面。BasicOnList只能使用数字键,不能:[\u id]
String json=TwitterObjectFactory.getRawJSON(状态);DBObject DBObject=(DBObject)JSON.parse(JSON);collection.insert(dbObject)\此处插入集合时出现错误。集合是DBCollection,必须对其进行初始化。看这一页