Adapted from snakeyaml WIKI project . Examples here .
How to disassemble JodaTime
Since JodaTime is not a JavaBean (because it does not have an empty constructor), it requires additional processing when parsing:
private class ConstructJodaTimestamp extends ConstructYamlTimestamp { public Object construct(Node node) { Date date = (Date) super.construct(node); return new DateTime(date, DateTimeZone.UTC); } }
When a JodaTime instance is a JavaBean property, you can use the following:
Yaml y = new Yaml(new JodaPropertyConstructor()); class JodaPropertyConstructor extends Constructor { public JodaPropertyConstructor() { yamlClassConstructors.put(NodeId.scalar, new TimeStampConstruct()); } class TimeStampConstruct extends Constructor.ConstructScalar { @Override public Object construct(Node nnode) { if (nnode.getTag().equals("tag:yaml.org,2002:timestamp")) { Construct dateConstructor = yamlConstructors.get(Tag.TIMESTAMP); Date date = (Date) dateConstructor.construct(nnode); return new DateTime(date, DateTimeZone.UTC); } else { return super.construct(nnode); } } } }
source share