Один экземпляр ObjectMapper Джексона не работает - PullRequest
0 голосов
/ 03 апреля 2019

Я использую один экземпляр ObjectMapper Джексона с конфигурацией Ошибка десериализации при неизвестных свойствах - false в моем приложении.
Иногда не получается получить ошибку

Конфликтующие / неоднозначные определения имени свойства (неявное имя 'indskr_indskr_customeraddress_v2id'): найдено несколько явных имен: [customeraddressid_v2_id, indskr_indskr_customeraddress_v2id], но также неявный comindein: .bulkdata.dto.CustomerAddress # indskr_indskr_customeraddress_v2id] [Visible = правда, игнорируйте = ложь, explicitName = ложь]

исключение приходит только в dev env и не может воспроизводиться в моей локальной системе. Это спорадическая проблема.

mObjectMapper = new ObjectMapper();
         mObjectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

 private String indskr_indskr_customeraddress_v2id;

@JsonGetter("indskr_indskr_customeraddress_v2id")
    public String getIndskr_indskr_customeraddress_v2id() {
        return indskr_indskr_customeraddress_v2id;
    }
 @JsonSetter("customeraddressid_v2_id")
    public void setIndskr_indskr_customeraddress_v2id(String indskr_indskr_customeraddress_v2id) {
        this.indskr_indskr_customeraddress_v2id = indskr_indskr_customeraddress_v2id;
    }

StackTrace

java.lang.IllegalStateException: Conflicting/ambiguous property name definitions (implicit name 'indskr_indskr_customeraddress_v2id'): found multiple explicit names: [customeraddressid_v2_id, indskr_indskr_customeraddress_v2id], but also implicit accessor: [field com.indegene.bulkdata.dto.CustomerAddress#indskr_indskr_customeraddress_v2id][visible=true,ignore=false,explicitName=false]
    at com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder._explode(POJOPropertyBuilder.java:1062) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.explode(POJOPropertyBuilder.java:1041) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector._renameProperties(POJOPropertiesCollector.java:798) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.collectAll(POJOPropertiesCollector.java:324) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.getPropertyMap(POJOPropertiesCollector.java:287) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.getProperties(POJOPropertiesCollector.java:170) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.introspect.BasicBeanDescription._properties(BasicBeanDescription.java:164) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.introspect.BasicBeanDescription.findProperties(BasicBeanDescription.java:239) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.deser.BasicDeserializerFactory._findCreatorsFromProperties(BasicDeserializerFactory.java:346) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.deser.BasicDeserializerFactory._constructDefaultValueInstantiator(BasicDeserializerFactory.java:330) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.deser.BasicDeserializerFactory.findValueInstantiator(BasicDeserializerFactory.java:255) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.buildBeanDeserializer(BeanDeserializerFactory.java:214) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:137) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:411) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:349) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:264) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:244) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.DeserializationContext.findContextualValueDeserializer(DeserializationContext.java:444) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.createContextual(CollectionDeserializer.java:183) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.createContextual(CollectionDeserializer.java:27) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.DeserializationContext.handleSecondaryContextualization(DeserializationContext.java:682) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:482) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.ObjectMapper._findRootDeserializer(ObjectMapper.java:4178) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3997) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3011) ~[jackson-databind-2.9.4.jar!/:2.9.4]
    at com.indegene.bulkdata.service.impl.ContactServiceImpl.getCustomerAddress(ContactServiceImpl.java:490) ~[classes!/:na]
    at com.indegene.bulkdata.service.impl.ContactServiceImpl.lambda$getCustomerAddressCompletableFuture$7(ContactServiceImpl.java:257) ~[classes!/:na]
    at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590) ~[na:1.8.0_212]
    at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_212]

ожидается: я не должен получить ошибку
актуально: иногда выдает ошибку

1 Ответ

1 голос
/ 04 апреля 2019

Проверка этого раздела ошибки:

найдено несколько явных имен: [customeraddressid_v2_id, indskr_indskr_customeraddress_v2id], но также неявный метод доступа: [поле com.indegene.bulkdata.dto.CustomerAddress # indskr_indskr_customeraddress_v2id]

Вы заметите, что есть два явных объявления, поэтому у вас, вероятно, есть аннотация @JsonProperty в другом месте, которая конфликтует с @JsonSetter.Удаление лишней аннотации должно устранить ее.

...