Сериализация Decimal128 в JSON - PullRequest
       7

Сериализация Decimal128 в JSON

0 голосов
/ 31 октября 2019

Я использую весеннюю загрузку для создания API, где я получаю значения из mongodb. Проблема, с которой я сталкиваюсь, состоит в том, что Decimal128 поля сериализуются как:

"userid": {
  "high": 3476778912330022912,
  "low": 10776,
  "naN": false,
  "infinite": false,
  "finite": true,
  "negative": false
}

Вот тело моего контроллера:

var wrappers = new EmbeddedWrappers(false);

var collection = mongoTemplate.getCollection("blah");

var result = collection.find().limit(1000).into(new ArrayList<>());

if (result == null) {
  return ResponseEntity.notFound().build();
}

return ResponseEntity.ok(new Resources<>(Arrays.asList(wrappers.wrap(result))));

Любые идеи, как я могу правильно сериализовать Decimal128 значения, чтобы у меня было только само значение?

1 Ответ

0 голосов
/ 31 октября 2019

Основано на комментариях:

@Configuration
public class ObjectMapperConfig {

  @Bean
  public ObjectMapper objectMapper() {
    var mapper = new ObjectMapper();

    var module = new SimpleModule();
    module.addSerializer(Decimal128.class, new Decimal128Serializer());
    mapper.registerModule(module);

    return mapper;
  }

  private static class Decimal128Serializer extends JsonSerializer<Decimal128> {
    @Override
    public void serialize(Decimal128 v, JsonGenerator g, SerializerProvider p) throws IOException {
      g.writeNumber(v.bigDecimalValue());
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...