SnakeYAML: Как отключить разбор подчеркивания при разборе?

Вот моя проблема. У меня есть документ YAML, который содержит следующую пару:

run_ID: 2010_03_31_101

Когда это будет проанализировано вorg.yaml.snakeyaml.constructor.SafeConstructor.ConstructYamlInt:159подчеркивания удаляются и конструктор возвращается Long 20100331101вместо неизмененного String "2010_03_31_101" что мне действительно нужно.

ВОПРОС: Как я могу отключить это поведение и заставить синтаксический анализатор использовать конструктор String вместо Long?

1 ответ

Решение

ХОРОШО. Получил ответ от своего списка рассылки. Вот

Привет, в соответствии со спецификацией ( http://yaml.org/type/int.html): любые символы "_" в числе игнорируются, что позволяет читаемое представление больших значений

У вас есть несколько способов решить это. 1) не полагайтесь на неявные типы, используйте кавычки (одинарные или двойные) run_ID: '2010_03_31_101'

2) Отключить распознаватель для целых чисел (как это делается здесь для чисел с плавающей запятой) ссылка 1 ссылка 2

3) Определите свой собственный шаблон для ссылки INT 3

Помните, что когда вы начинаете отклоняться от спецификации, другие получатели могут не проанализировать ваш документ YAML. Использование кавычек безопасно.

  • Андрей
Другие вопросы по тегам