Приложение Yml Map > в конструкции багажника весной - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть коллекция

@Component
@ConfigurationProperties(prefix="com.ptsb.refData")
public class RefDataConfigMap {

    private Map<String,Map<String,List<RefDataResponse>>> entries;

    public Map<String, Map<String, List<RefDataResponse>>> getEntries() {
        return entries;
    }

    public void setEntries(Map<String, Map<String, List<RefDataResponse>>> entries) {
        this.entries = entries;
    }

RefDataRespone:

public class RefDataResponse {

      @JsonProperty("sourceSystem")
      private String refKeyTgtSystem = null;

      @JsonProperty("sourceSystemValue")
      private String refKeyTgtSystemValue = null;

    public String getRefKeyTgtSystem() {
        return refKeyTgtSystem;
    }

    public void setRefKeyTgtSystem(String refKeyTgtSystem) {
        this.refKeyTgtSystem = refKeyTgtSystem;
    }

    public String getRefKeyTgtSystemValue() {
        return refKeyTgtSystemValue;
    }

    public void setRefKeyTgtSystemValue(String refKeyTgtSystemValue) {
        this.refKeyTgtSystemValue = refKeyTgtSystemValue;
    }

}

Я инициализируюсь в application.yml, как показано ниже

com:
  ptsb:
    refData:
      entries:
             GENDER:
                    Male:
                         - refKeyTgtSystem:Siebel
                           refKeyTgtSystemValue:M

Я получаю ошибка при попытке выполнить приложение.

Не удалось преобразовать значение свойства типа 'java .lang.String' в требуемый тип 'com.ptsb.ref.models.RefDataResponse' для свойства 'записи [GENDER] [Мужчина] [0]; вложенное исключение: java .lang.IllegalStateException: невозможно преобразовать значение типа 'java .lang.String' в требуемый тип 'com.ptsb.ref.models.RefDataResponse' для записей свойства '[GENDER] [Male] [ 0] ': не найдено подходящих редакторов или стратегии преобразования

Как инициализировать это в приложении yml?

1 Ответ

1 голос
/ 02 апреля 2020

This:

- refKeyTgtSystem:Siebel
  refKeyTgtSystemValue:M

определяет последовательность с одной строковой записью, "refKeyTgtSystem:Siebel refKeyTgtSystemValue:M". В случае сомнений вы можете использовать онлайн-инструменты , используя PyYAML , NimYAML (моя работа) или другие, чтобы увидеть, как анализируется ваш YAML.

Проблема в том, что Вы забыли добавить пробел после символов :. Это требуется в YAML для ключей сопоставления без кавычек. Даже тогда вы использовали @JsonProperty для изменения названия клавиш, поэтому правильный синтаксис:

- sourceSystem: Siebel
  sourceSystemValue: M
...