Невозможно десериализовать ключи типа java .util.EnumMap Enum - PullRequest
0 голосов
/ 22 апреля 2020

MyModel. java

publi c class MyModel {

private List<ApiDetail> apiDetails;

private PolicyDetail policyDetail;

private Product product;

 //getters and setters

}

PolicyDetail. java

publi c class PolicyDetail {

EnumMap<PolicyType, Policy> policyMap = null;

//getter and setters

}

PolicyType. java

@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum PolicyType {

   POL1,
   POL2
}

Запрос. json

{
"apiDetails": [
        {
            "apiName": "Api1"
        }, 
        {
            "apiName": "Api2"

        }
],
"policyDetail": {
    "policies": {
        "POL1": {
            "param1": "3600000",
            "param2": true
        },
        "POL2": {
            "param3": "Milli Second",
            "param4": 5000
        }
    }
},
"product": {
    "productName": "My Product"
}

}

С этим, когда я пытаюсь отправить запрос. json с помощью Почтальона. Я получаю следующую ошибку

com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `PolicyType` from String "param1": not one of the values accepted for Enum class: [POL1, POL2]

Я пытался с некоторыми ссылками Сериализация Enums и Джексон-десериализация и даже зарегистрировал мой пользовательский десериализатор, но ничего не работает.

Все эти классы уже представлены в API, которые я не могу изменить, поэтому мне придется настроить десериализатор, но я потрошен.

...