如何为某个元素附加 XStream 转换器?

发布于 2024-09-12 08:00:23 字数 783 浏览 6 评论 0原文

为某种类型设置转换器很容易(http: //x-stream.github.io/javadoc/com/thoughtworks/xstream/XStream.html 给出了一个示例):

xstream.registerConverter(new SqlTimestampConverter());
xstream.registerConverter(new DynamicProxyConverter());

我想注册一个转换器,但在不同的元素名称上。 Converter 接口不提供元素的名称。

例如:如果元素名称(属性名称)位于 中,但如果位于 中,则应将日期转换为详细字符串。如何根据属性名称添加不同的转换器?像 xstream.registerConverter( Class classtype, propertyname, converter ) 这样的东西不存在,但会很好。

我知道我可以使用 PrettyPrintWriter 的专门版本,但这对于这个简单的工作来说似乎需要做很多工作。还有其他想法吗?

顺便说一句:我可以使用注释 @XStreamConverter(XXX.class) 但我不想使用注释。我希望我的 bean 没有任何注释。

It is easy to set a converter for a certain type (http://x-stream.github.io/javadoc/com/thoughtworks/xstream/XStream.html gives an example):

xstream.registerConverter(new SqlTimestampConverter());
xstream.registerConverter(new DynamicProxyConverter());

I would like to register a converter, but on different element names. The Converter interface does not offer the name of the element.

For example: A date should be converted to a detailed string if the element name (property name) will be in <longDate> but short if in <shortDate>. How can I add different converters based on the property name? Something like xstream.registerConverter( Class classtype, propertyname, converter ) didn't exist but would be nice.

I know that I can use a specialised version of a PrettyPrintWriter but that seems to much work for this simple job. Any other ideas?

BTW: I could use an annotation @XStreamConverter(XXX.class) but I don't want to use annotations. I want my bean free of any annotation.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

执笏见 2024-09-19 08:00:23

使用 registerLocalConverter() 而不是 registerConverter()

xstream.registerLocalConverter( MyClazz.class, "property", new MyConverter() );

Use registerLocalConverter() instead of registerConverter().

xstream.registerLocalConverter( MyClazz.class, "property", new MyConverter() );
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文