我想使用 SnakeYAML(或其他解析器)解析 Docker-compose.yml。我遇到的问题是属性可以是字符串或更复杂的对象,例如 configs ,支持“短”语法和“长”语法:
简短
version: "3.3"
services:
redis:
image: redis:latest
deploy:
replicas: 1
configs:
- my_config
- my_other_config
configs:
my_config:
file: ./my_config.txt
my_other_config:
external: true
长
version: "3.3"
services:
redis:
image: redis:latest
deploy:
replicas: 1
configs:
- source: my_config
target: /redis_config
uid: '103'
gid: '103'
mode: 0440
configs:
my_config:
file: ./my_config.txt
my_other_config:
external: true
如何将其映射到 SnakeYAML?目前,我已经创建了 Java Bean 来对不同元素进行建模,并将模型配置设置为 List<String>
但这显然只适用于短语法。
最佳答案
如果 SnakeYaml 遇到需要反序列化对象的 String,它会查找带有 String 参数的构造函数。
因此,在示例中,为 config 的长语法定义一个 JavaBean 就足够了,然后向其添加一个以短语法作为参数的构造函数。
关于java - SnakeYAML 多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54886815/