Я использую SnakeYAML для определенной сериализации / десериализации. В моем приложении сочетаются Python и Java, поэтому мне нужно «разумное поведение» для тегов и типов.
Моя проблема / фактический статус в документе YAML:
!!mypackage.MyClassA
someFirstField: normal string
someSecondField:
a: !!mypackage.ThisIsIt
subField: 1
subOtherField: 2
b: !!mypackage.ThisIsIt
subField: 3
subOtherField: 4
someThirdField:
subField: 5
subOtherField: 6
Я добился использования тегов внутри коллекций (см. Пример someSecondField
), повторно реализовав checkGlobalTag
и просто выполнив return
. Это, если я правильно понял, не обеспечивает интеллектуальной чистоты snakeyaml и поддерживает теги. Пока все хорошо: мне нужен шрифт везде.
Однако этого недостаточно, потому что someThirdField
также является !!mypackage.ThisIsIt
, но имеет неявный тег, и это проблема (Python этого не понимает). Есть и другие угловые случаи, которые не относятся к делу (пытался воспользоваться некоторыми ярлыками на стороне Python, и они стали плохой идеей).
Как правильно обеспечить отображение тегов для всех пользовательских классов? Я предполагаю, что мне следует переопределить некоторые методы в Representer
, но я не смог найти, какой из них.