Twitter4J rawJSON () возвращает ноль

1

Я пытаюсь получить строку rawJSOn от такого состояния, как:

TwitterObjectFactory.getRawJSON(status);

Но его возврат невозможен. Я проверил, установлено ли значение JSONStoreEnabled() равным true, и это было (если бы не я получал исключение).

Довольно путают в этом, так как в документации не описаны возможные решения.

PS Я проверил, был ли объект Status, с которым я проходил, был прав, вызвав метод getText(), и он вернул текст твита.

Я пытаюсь сделать это в болте Apache Storm, который получает объект Status, и я использую объект как таковой:

Status status = (Status)tuple.getValueByField("tweet");

благодаря

  • 0
    Является ли вызов getRawJSON определенно в том же потоке, что и вызов createStatus который его первоначально создал, без каких-либо других промежуточных вызовов create* в этом потоке?
  • 0
    это топология Apache Storm, поэтому поток createStatus может быть вызван на другом узле в кластере
Показать ещё 3 комментария
Теги:
apache-storm
twitter4j

2 ответа

1

За последние пару дней я столкнулся с подобными проблемами. Я не эксперт в пакете, однако я обнаружил, что это проблема с 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));
        }
0

Я была такая же проблема. Однако после проверки API я заметил 1 действительно важное предложение:

"Обратите внимание, что необработанные формы JSON могут извлекаться только из одного потока, вызванного последним вызовом метода, и станут недоступными после вызова другого метода",

Я пытался интегрировать все это с Kafka и пытаюсь преобразовать полученный объект Status в отдельный метод.

Я начал передавать статус в исходную строку json внутри самого метода onStatus, например:

@Override
public void onStatus(Status status) {
    queue.offer(TwitterObjectFactory.getRawJSON(status));
}

И проблема была исправлена.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню