gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:15:06 24 4
gpt4 key购买 nike

我正在从 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());

}
}

}

最佳答案

Twitter4j 的

Status 不是 Json,您应该先将其转换。

在您的 cofigurationBuilder 上,您必须将 JSONStorEnabled 设置为 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;

您需要从状态创建 Json 并使用 mongo 解析它

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

关于java - 如何将从 Twitter 接收的数据存储到 MongoDb 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45544413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com