2

我有以下由 SnakeYaml 生成的 1.1 YAML

'test_jbgrp1':
  'tags': []
  'jobs':
  - 'test_job1'
  'reserve': []
  'cancel':
  - 'max_duration': !!int '1200'

!!int标签正在破坏另一个(旧)软件,我需要在写入文件之前删除该标签。我不想恢复到愚蠢的解决方案,例如将内容写入字符串并在转储文件之前对其进行后处理,所以问题是 - Snakeyaml 中是否有可以!!int从上面的代码中删除的设置?

4

1 回答 1

2

假设您必须删除所有出现的!!int

您可以查看How to skip a property to skip the property or do some transformation using Flexible Scalar Type Customization

简而言之,您配置Yaml实例如下

Yaml yaml = new Yaml(new MyRepresenter());
String output = yaml.dump(new MyJavaBean());

其中 MyRepresenter 表示如下

@Override
protected NodeTuple representJavaBeanProperty(Object javaBean, Property property,
                        Object propertyValue, Tag customTag) {
       if (int.class.equals(property.getType())) {//some better condition
          //construct NodeTupe as you wish - i.e. keep the element and remove the type
          return null;//this will skip the property
       } else {
          return super
                     .representJavaBeanProperty(javaBean, property, propertyValue, customTag);
       }
}
于 2014-09-09T17:39:59.637 回答