Я пытаюсь получить строку rawJSOn от такого состояния, как:
TwitterObjectFactory.getRawJSON(status);
Но его возврат невозможен. Я проверил, установлено ли значение JSONStoreEnabled() равным true, и это было (если бы не я получал исключение).
Довольно путают в этом, так как в документации не описаны возможные решения.
PS Я проверил, был ли объект Status, с которым я проходил, был прав, вызвав метод getText(), и он вернул текст твита.
Я пытаюсь сделать это в болте Apache Storm, который получает объект Status, и я использую объект как таковой:
Status status = (Status)tuple.getValueByField("tweet");
благодаря
За последние пару дней я столкнулся с подобными проблемами. Я не эксперт в пакете, однако я обнаружил, что это проблема с twitter4j версии 4.0.3, особенно с:
twitterObjectFactory.getRawJson (статус)
Я использовал пакеты Twiiter4j 4.0.2, и мне удалось получить сырой json, используя DataObjectFactory.getRawJson(status)
. Однако вы получите предупреждение об отказе, которое я решил игнорировать.
@SuppressWarnings("deprecation")
@Override
public void onStatus(Status status) {
System.out.println("@" + status.getUser().getScreenName()
+ " - " + status.getText());
tweetQueue.offer(DataObjectFactory.getRawJSON(status));
}
Я была такая же проблема. Однако после проверки API я заметил 1 действительно важное предложение:
"Обратите внимание, что необработанные формы JSON могут извлекаться только из одного потока, вызванного последним вызовом метода, и станут недоступными после вызова другого метода",
Я пытался интегрировать все это с Kafka и пытаюсь преобразовать полученный объект Status в отдельный метод.
Я начал передавать статус в исходную строку json внутри самого метода onStatus, например:
@Override
public void onStatus(Status status) {
queue.offer(TwitterObjectFactory.getRawJSON(status));
}
И проблема была исправлена.
getRawJSON
определенно в том же потоке, что и вызовcreateStatus
который его первоначально создал, без каких-либо других промежуточных вызововcreate*
в этом потоке?