我有一条已存储在文件中的推文。我想将用户提取为 json 对象并将其存储在不同的文件中。结果如下java.lang.IllegalStateException: Apparently jsonStoreEnabled is not set to true.
String jsonStatus; //Content read from a file
Status status = TwitterObjectFactory.createStatus(jsonStatus); //no problem here
String jsonUser = TwitterObjectFactory.getRawJSON(status.getUser()); //Exception
Run Code Online (Sandbox Code Playgroud)
如何设置jsonStoreEnabled到true?或者,还有其他方法吗?我不必坚持Twitter4j创建jsonUser. 我试过了json-simple,但结果字符串不能用 Twitter4j 解析。
TwitterObjectFactory 有一个名为registeredAtleastOnce 的变量,如果为false,您将获得java.lang.IllegalStateException: Apparently jsonStoreEnabled is not set to true.. 您可以看到此页面
TwitterObjectFactory
因此,如果您不希望出现该错误,则必须调用一次 Twitter API,例如对于文件的第一行
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
.setOAuthConsumerKey(Ckey)
.setOAuthConsumerSecret(CkeySecret)
.setOAuthAccessToken(AToken))
.setOAuthAccessTokenSecret(AtokenSecret)
.setJSONStoreEnabled(true);
TwitterFactory tf = new TwitterFactory(cb.build());
Twitter twitter = tf.getInstance();
String jsonStatus; //Content read from a file
Status status = TwitterObjectFactory.createStatus(jsonStatus); //your status
User u2 = t.showUser(status.getUser().getScreenName()); // you use the twitter object once
String jsonUser = TwitterObjectFactory.getRawJSON(status.getUser()); //now you won't get the error
System.out.print(jsonUser); //your happy json
Run Code Online (Sandbox Code Playgroud)
这样你就不会得到那个错误
事实证明,这个org.json包在这种情况下很有帮助:
public static String extractUser(String rawJSON) {
return new org.json.JSONObject(rawJSON).get("user").toString();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2126 次 |
| 最近记录: |