Google HTTP-клиент JacksonFactory не смог разобрать POJO [дубликат]

Один общий подход, о котором я не упоминал здесь, заключается в том, чтобы запустить HTML через Tidy , который может быть настроен на выдачу гарантированного действительного XHTML. Затем вы можете использовать любую старую библиотеку XML.

Но к вашей конкретной проблеме вы должны взглянуть на этот проект: http://fivefilters.org/content-only/ - это модифицированная версия алгоритма Readability , который предназначен для извлечения только текстового содержимого (а не верхних и нижних колонтитулов) со страницы.

0
задан markvgti 19 January 2016 в 10:01
поделиться

2 ответа

Выяснил проблему: это работает JacksonFactory().createJsonGenerator().searialize() (я ожидал, что он сериализует сериализацию ObjectMapper). Это код для JsonHttpContent.writeTo() (из JsonHttpContent.java в google-http-java-client ):

public void writeTo(OutputStream out) throws IOException {
    JsonGenerator generator = jsonFactory.createJsonGenerator(out, getCharset());
    generator.serialize(data);
    generator.flush();
}

Джексон JsonGenerator ожидает ключевое значение (представляется в Java как Map), что не очевидно из сигнатуры конструктора конструктора JsonHttpContent: JsonHttpContent(JsonFactory, Object).

Итак, если вместо передачи GcmDownstreamDto (как определено в вопрос, который будет работать с ObjectMapper), я должен был сделать следующее:

Map<String, Object> map = new HashMap<>();
List<String> idList = Arrays.asList("ABC");
map.put("registration_ids", idList);

все работает так, как ожидалось, и выход:

{"registration_ids":["ABC"]}

Так что просто не забудьте передать конструктор JsonHttpContent(JsonFactory, Object) a Map<String, Object> в качестве второго параметра, и все будет работать так, как вы ожидали.

2
ответ дан markvgti 27 August 2018 в 23:09
поделиться

Вам необходимо аннотировать поля POJO с помощью @Key:

import com.google.api.client.util.Key;

// ...

@Key private String to;
@Key private Object data;
@Key private List<String> registration_ids;

// ...
4
ответ дан Eng.Fouad 27 August 2018 в 23:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: