我正在测试一个流式传输Twitter数据的应用程序。
List<Status> statuses = twitter.getHomeTimeline();
for (Status status : statuses) {
String rawJSON = TwitterObjectFactory.getRawJSON(status);
System.out.println(rawJSON);
}
此代码工作正常并打印出类似这样的内容
{&#34; in_reply_to_status_id_str&#34;:空,&#34; in_reply_to_status_id&#34;:空,&#34;坐标&#34;:空,&#34; created_at&#34;:&#34;星期二 12月05日13:29:02 +0000 2017&#34;&#34;截断&#34;:假,&#34; in_reply_to_user_id_str&#34;:空,&#34;源&#34;:&#34; HTTP://twitter.com/#! /下载/ ipad的\&#34;相对= \&#34; nofollow的\&#34;&GT;微 对于 ipad公司&LT; / A&GT;&#34;&#34; retweet_count&#34;:1,&#34;转推&#34;:假,&#34;地理&#34;:空,&#34; in_reply_to_screen_name&#34 ;:空,&#34; is_quote_status&#34;:假,&#34;实体&#34; {&#34;网址&#34;:[],&#34;#标签&#34;:[],& #34; user_mentions&#34;:[],&#34;符号&#34;:[]}&#34; .....}
当我实施设置要跟踪的关键字的实时流查询时,它只会打印null
。
while(true){
Status status = queue.poll();
if (status == null) {
Thread.sleep(100);
}
if(status!=null){
String json = TwitterObjectFactory.getRawJSON(status);
System.out.println(json);
}
}
我该如何解决这个问题?谢谢。
答案 0 :(得分:1)
来自TwitterObjectFactory javadoc
getRawJSON(java.lang.Object obj) 返回提供的对象的原始JSON形式。 请注意,原始JSON表单只能从调用上一个方法调用的同一线程中检索,一旦另一个方法调用将无法访问
当您在尝试检索要转换的状态的方法之后调用任何方法来检索数据时,它们将变得不可访问,在这种情况下,该方法将返回null而不是json。要解决此问题,您必须在抓取它们后直接对其进行转换。
可悲的是,我不知道该问题的解决方法,甚至不知道他们为什么这样做!