Я пытаюсь использовать JsonDeserialize Джексона в Kotlin, но у меня возникают проблемы с настройкой классов данных.Я получаю следующую ошибку при отправке запроса в контроллер.
Ошибка синтаксического анализа JSON: сбой создания значения [простой тип, класс co.com.bancodebogota.customer.accounts.entities.Customer]для свойства идентификации JSON из-за пропущенного (поэтому NULL) значения для параметра-идентификатора создателя, который является ненулевым типом
Мои классы данных выглядят так ->
data class BalanceByAccountRq @JsonCreator constructor(
@JsonProperty("customer") var customer: Customer,
@JsonProperty("account") var account: Account,
@JsonProperty("ipAddress") var ipAddress: String,
@JsonProperty("bankId") var bankId: String)
data class Customer @JsonCreator constructor(
@JsonProperty("identificationNumber") @JsonDeserialize(using = AsymmetricDeserializerString::class) var identificationNumber: String,
@JsonProperty("identificationType") var identificationType: String)
data class Account @JsonCreator constructor(
@JsonProperty("accountId") var accountId: String,
@JsonProperty("accountType") var accountType: String)
Если я удаляю JsonProperty не имеет никакого значения
Кто-нибудь использовал это в kotlin?Я что-то упустил?
Это класс приложения
@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan(basePackages = arrayOf("co.com.adl", "co.com.bancodebogota"))
@EnableConfigurationProperties
class PbBbogAvalProductBalanceDetailApplication
fun main(args: Array<String>) {
SpringApplication.run(PbBbogAvalProductBalanceDetailApplication::class.java, *args)
}
@Bean
@Throws(NoSuchAlgorithmException::class, NoSuchPaddingException::class)
fun asymmetricCryptography(): AsymmetricCryptography {
return AsymmetricCryptography();
}
И контроллер:
@PostMapping("/balance")
fun getBalanceByAccount(@RequestBody @Valid rq: BalanceByAccountRq, resultOfValidation: BindingResult): ResponseEntity<BalanceByAccountRs> {
System.out.println(rq);
if (resultOfValidation.hasErrors()) {
var fieldErrors : List<FieldError> = resultOfValidation.getFieldErrors();
throw RequiredValidator(ERROR_PARAMETROS_DE_ENTRADA, fieldErrors);
} else {
return gbba.getBalanceByAccount(rq);
}
}
РЕДАКТИРОВАТЬ:
Полезная нагрузка:
{
"customer": {
"identificationNumber": "80026300",
"identificationType": "CC"
},
"account": {
"accountId": "8929932",
"accountType":"SDA"
},
"bankId": "0052",
"ipAddress": "192.168.0.1"
}
В профиле dev не расшифровывается, поэтому параметр в этой полезной нагрузке не шифруется.Это прекрасно работает в микросервисе java8