SnakeYAML: Как отключить разбор подчеркивания при разборе? - PullRequest
3 голосов
/ 27 апреля 2010

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

run_ID: 2010_03_31_101

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

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

1 Ответ

5 голосов
/ 27 апреля 2010

OK. Получил ответ от своего списка рассылки. Вот оно

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

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

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

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

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

  • Андрей
...