我试图将twitter4j状态对象保存到Mongodb。我有以下代码:将twitter4j状态对象保存到MongoDB
public void saveTweets(Status status) throws Exception {
BasicDBObject tweet = new BasicDBObject();
tweet.put("tweet_id", status.getId());
tweet.put("user", status.getUser());
tweet.put("text", status.getText());
tweet.put("location", status.getGeoLocation());
tweet.put("place", status.getPlace());
tweet.put("created_at", status.getCreatedAt());
tweet.put("contributors", status.getContributors());
tweet.put("hashtag_entities", status.getHashtagEntities());
tweet.put("media_entities", status.getMediaEntities());
tweet.put("user_mention_entities", status.getUserMentionEntities());
tweet.put("url_entities", status.getURLEntities());
tweet.put("source", status.getSource());
tweet.put("retweeted_status", status.getRetweetedStatus());
tweet.put("retweeted_count", status.getRetweetCount());
tweet.put("count", 0);
tweetsDAO.saveToDB(tweetsCollectionName, tweet);
}
但这是抛出以下异常:
java.lang.IllegalArgumentException: can't serialize class twitter4j.internal.json.UserJSONImpl
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:270)
at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:174)
at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:120)
at com.mongodb.DefaultDBEncoder.writeObject(DefaultDBEncoder.java:27)
at com.mongodb.OutMessage.putObject(OutMessage.java:289)
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:239)
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:204)
at com.mongodb.DBCollection.insert(DBCollection.java:76)
at com.mongodb.DBCollection.insert(DBCollection.java:60)
at com.mongodb.DBCollection.insert(DBCollection.java:105)
好像我需要去更多的进入状态对象,并有单独的BasicDBObject每个实体返回。但是几乎所有的status.get ***调用都返回另一个具有feild的twitter4j实体,这是一项相当大的任务。
有没有更好的方法来做到这一点?
谢谢。
u能张贴上面的堆栈跟踪? – rahulserver
增加了stacktrace。 – popcoder
它是完整的堆栈跟踪吗?它不包含错误发生的确切位置。它很难从上面看出跟踪是什么导致异常, – rahulserver