从 json 推文中获取 json 用户

mos*_*aab 5 java twitter4j

我有一条已存储在文件中的推文。我想将用户提取为 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)

如何设置jsonStoreEnabledtrue?或者,还有其他方法吗?我不必坚持Twitter4j创建jsonUser. 我试过了json-simple,但结果字符串不能用 Twitter4j 解析。

Fea*_*Doe 5

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)

这样你就不会得到那个错误


mos*_*aab 0

事实证明,这个org.json包在这种情况下很有帮助:

public static String extractUser(String rawJSON) {
    return new org.json.JSONObject(rawJSON).get("user").toString();
}
Run Code Online (Sandbox Code Playgroud)