3

cosmos java sdk

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-cosmos</artifactId>
    <version>4.1.0</version>
</dependency>

We want to use custom date format while serialization of POJO to JSON, Currently it is converting to long only. @JsonFormat( ...) can be put on getters to provide date format but it needs to be added to all the fields and there may be requirement of some other customization. What is the way to provide a custom ObjectMapper to cosmos client?

Roman Patutin
  • 2,171
  • 4
  • 23
  • 27
pvjhs
  • 549
  • 1
  • 9
  • 24

1 Answers1

1

The cosmos converter class looks like this:

public MappingCosmosConverter (
    MappingContext<? extends CosmosPersistentEntity<?>, CosmosPersistentProperty> mappingContext,
    @Qualifier(Constants.OBJECT_MAPPER_BEAN_NAME) ObjectMapper objectMapper) {
    this.mappingContext = mappingContext;
    this.conversionService = new GenericConversionService();
    this.objectMapper = objectMapper == null ? ObjectMapperFactory.getObjectMapper()
        : objectMapper;
}

So if you provide a bean like that:

@Bean
public ObjectMapper cosmosObjectMapper() {
    return ObjectMapperFactory.getObjectMapper();
}

Where the factory is provided by cosmos sdk: com.azure.spring.data.cosmos.core.convert.ObjectMapperFactory then you can customize your object mapper.

zakar
  • 11
  • 1