JsonDeserialize выдает ошибку синтаксического анализа JSON по запросу в Kotlin - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь использовать 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

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