Spring boot APP 2.2.0.RELEASE
Конфигурация по умолчанию (используйте Джексона)
WebMvcConfigurer, objectMapper
@Configuration
@EnableWebMvc
class WebMvcConfiguration : WebMvcConfigurer {
@Bean
fun objectMapperMvc(): ObjectMapper {
val objectMapper = ObjectMapper()
val javaTimeModule = JavaTimeModule()
objectMapper.findAndRegisterModules()
objectMapper.registerModule(javaTimeModule)
return objectMapper
}
@Bean
fun messageConverter(): MappingJackson2HttpMessageConverter {
return MappingJackson2HttpMessageConverter(objectMapperMvc())
}
override fun configureMessageConverters(converters: MutableList<HttpMessageConverter<*>>) {
converters.add(messageConverter())
}
}
Служба отдыха
@RestController
@Validated
@RequestMapping(value = [ApplicationProperties.MOBILE_TEST_END_POINT])
@ResponseStatus(HttpStatus.OK)
@ResponseBody
class MobileTest {
@RequestMapping(value = ["/gen-token"], method = [RequestMethod.POST],
consumes = [MediaType.APPLICATION_JSON_VALUE],
produces = [MediaType.APPLICATION_JSON_VALUE])
fun createSessionToken(@RequestBody @Valid genToken: GenToken): SessionToken {
return SessionToken(sDataSec = "23123")
}
Сущность
@AllOpen
@NoArg
class SessionToken (
@JsonProperty(required = true, value = "sDataSec")
@NotNull
val sDataSec: String)
Результат json
{"sdataSe c ":" 23123 "}
Игнорировать свойство JsonProperty и созданное поле с именем 'sdataSe c'! = 'Ожидается sDataSe c'
Вторая попытка, удалить создание поля из конструктора
Сущность
@AllOpen
@NoArg
class SessionToken {
@JsonProperty(required = true, value = "sDataSec")
@NotNull
lateinit var sDataSec: String
}
Результат json
{"sDataSe c": "23123", "sdataSe c": "23123",}
Эта работа, но теперь у нас есть дублирующее поле с 2 разными именами