從@Ben卡爾森的版本有一個問題,如果你的對象樹包含來自同一個包的DateTime其他類。
一個更強大的版本,日期時間轉換爲XML和背部不需要反思,以及:
public static class JodaTimeConverter implements Converter
{
@Override
@SuppressWarnings("unchecked")
public boolean canConvert(final Class type)
{
return DateTime.class.isAssignableFrom(type);
}
@Override
public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context)
{
writer.setValue(source.toString());
}
@Override
@SuppressWarnings("unchecked")
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context)
{
return new DateTime(reader.getValue());
}
}
註冊轉換器使用XStream使用它:
XStream xstream = new XStream();
xstream.registerConverter(new JodaTimeConverter());