Как опустить теги типа данных в SnakeYaml?

У меня есть следующий 1.1 YAML, созданный SnakeYaml

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

Тег !!int ломает другую (более старую) часть программного обеспечения, и у меня есть требование удалить тег перед записью файла. Я не хочу возвращаться к глупым решениям, таким как запись содержимого в строку и его постобработка перед сбросом файла, поэтому вопрос в том, есть ли в Snakeyaml настройка, которая удалит !!int из приведенного выше кода?


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


Ответы (1)


Предполагая, что вам нужно удалить все вхождения !!int

Чтобы пропустить свойства или выполните некоторые преобразования с помощью гибкой настройки скалярного типа

Короче говоря, вы настраиваете экземпляр 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);
       }
}
person bhantol    schedule 09.09.2014