json сериализация игнорировать kotlin аннотация поля - PullRequest
0 голосов
/ 19 апреля 2020

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 разными именами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...