如何仅为某个元素附加 XStream 转换器?
Posted
技术标签:
【中文标题】如何仅为某个元素附加 XStream 转换器?【英文标题】:How to attach a XStream converter just for a certain element? 【发布时间】:2011-03-23 21:48:22 【问题描述】:为某种类型设置转换器很容易(http://x-stream.github.io/javadoc/com/thoughtworks/xstream/XStream.html 举个例子):
xstream.registerConverter(new SqlTimestampConverter());
xstream.registerConverter(new DynamicProxyConverter());
我想注册一个转换器,但使用不同的元素名称。 Converter 接口不提供元素的名称。
例如:如果元素名称(属性名称)在<longDate>
中,则日期应转换为详细字符串,但如果在<shortDate>
中则短。如何根据属性名称添加不同的转换器?像 xstream.registerConverter(Class classtype, propertyname, converter) 这样的东西不存在,但会很好。
我知道我可以使用 PrettyPrintWriter 的专用版本,但这似乎对这个简单的工作很有用。还有其他想法吗?
顺便说一句:我可以使用注释 @XStreamConverter(XXX.class) 但我不想使用注释。我希望我的 bean 没有任何注释。
【问题讨论】:
【参考方案1】:使用registerLocalConverter()
代替registerConverter()
。
xstream.registerLocalConverter( MyClazz.class, "property", new MyConverter() );
【讨论】:
以上是关于如何仅为某个元素附加 XStream 转换器?的主要内容,如果未能解决你的问题,请参考以下文章