Десериализация свойства YAML с точкой в ​​ключе с использованием Джексона - PullRequest
0 голосов
/ 28 августа 2018

Я десериализирую YAML, который выглядит как

category.a.1:
  property: value
category.a.2:
  property: value
category.b.1:
  property: value

Хотя точки в ключах не требуются, они наиболее предпочтительны (таким образом, они соответствуют идентификаторам сторонних производителей, которые они представляют).

Несмотря на то, что точка ничего не значит в синтаксисе YAML, Джексон по-прежнему интерпретирует их как переход на уровень ниже по карте, и когда я пытаюсь сопоставить его с объектом Java, Джексон интерпретирует YAML как

category:
  a:
    1:
      property: value

Я бы хотел, чтобы Джексон полностью игнорировал периоды в Струнах и давал их мне нетронутыми.

Поиск в теме по теме оказался весьма расплывчатым, и самый близкий ответ, который я смог найти, - вместо этого говорить о том же, но для файла свойств Java: Файл десериализации, содержащий точку с Джексоном

Картограф YAML создается следующим образом

ObjectMapper yamlMapper = new ObjectMapper(new YAMLFactory());
yamlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
yamlMapper.registerModule(myMapperModule);

Тем не менее, похоже, что нет никакой дополнительной функции десериализации, которую я могу включить для игнорирования разделителя пути в этом случае. И ни выход из периода, ни завершение его в "[category.a.1]", похоже, ничего не делают.

Есть ли способ сделать это, возможно, даже с помощью аннотации к свойству в конструкторе @JsonCreator, или я пытаюсь согнуть YAML так, как не должен?

Спасибо

...