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

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

run_ID: 2010_03_31_101

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

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


person Bostone    schedule 27.04.2010    source источник


Ответы (1)


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

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

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

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

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

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

  • Андрей
person Bostone    schedule 27.04.2010
comment
Ссылки мертвы. - person Dimath; 11.02.2021