Притворное свидание ДжексонаВремя JsonMappingException

 int value = 35634646;
 DecimalFormat myFormatter = new DecimalFormat("#,###");
 String output = myFormatter.format(value);
 System.out.println(output);

OUTPUT : 35,634,646

0
задан MrNetroful 6 March 2019 в 17:43
поделиться

1 ответ

Когда мы посмотрим, как реализованы JacksonEncoder и JacksonDecoder , мы заметим, что они создают новые ObjectMapper в конструкторе:

public JacksonDecoder(Iterable<Module> modules) {
  this(new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
      .registerModules(modules));
}
[1115 ] Выше конструктор вызывается по умолчанию с помощью emptyList(). Итак, нам нужно предоставить все модули, которые мы хотим использовать вручную.

Для получения максимальной отдачи от Java 8 и Jackson зарегистрируйте все 3 модуля из jackson-modules-java8 :

private val client = Feign.builder()
    .encoder(JacksonEncoder(Arrays.asList(JavaTimeModule(), ...)))
    .decoder(JacksonDecoder(Arrays.asList(JavaTimeModule(), ...)))
    .target(Client::class.java, host)

РЕДАКТИРОВАТЬ [1113 ]
Ther - конструктор, позволяющий использовать ObjectMapper экземпляр. Вы можете создать новый экземпляр или добавить его из своего контейнера:

val mapper = ObjectMapper()
mapper.registerModule(ParameterNamesModule())
   .registerModule(Jdk8Module())
   .registerModule(JavaTimeModule())
// other configuration

val client = Feign.builder()
    .encoder(JacksonEncoder(mapper))
    .decoder(JacksonDecoder(mapper))
    .target(Client::class.java, host)
0
ответ дан Michał Ziober 6 March 2019 в 17:43
поделиться
Другие вопросы по тегам:

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