【问题标题】:Is there a way to use same alias for two different class to set as alias in xstream有没有办法为两个不同的类使用相同的别名在 xstream 中设置为别名
【发布时间】:2015-07-28 07:56:07
【问题描述】:

我对“StackExchange”还很陌生,所以如果我的问题问得更早或不是特别清楚,请原谅。

我正在使用 XStream 类将响应 XML 解析为 JAVA 对象(使用 fromXML() 方法)。我已经创建了实用程序类(比如 XStreamUtil - 一个单例类),并使用“XSTREAM.alias("NewDataSet", Transactional.class);”之类的语句在其中配置了不同的模型类。

现在的问题是 - 我从具有相同父节点(例如)的第三方获取 XML 作为对不同 API 的响应。所以,如果我使用如下代码 -

XSTREAM.alias("NewDataSet", Transactional.class);

XSTREAM.alias("NewDataSet", Open.class);

XSTREAM.alias("NewDataSet", Details.class);

{ XStream 无法解析前两个类(Transactional 和 Open)的响应,它试图通过“Details.class”(配置的最后一个)解析它。这会引发如下异常 -

brilliance.model.report.notify.Details.Transactional
---- Debugging information ----
field               : Transactional
class               : com.brilliance.model.report.notify.Details
required-type       : com.brilliance.model.report.notify.Details
converter-type      :      com.thoughtworks.xstream.converters.reflection.ReflectionConverter
path                : /NewDataSet/Transactional
version             : 1.4.7

    com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$Un    knownFieldException: No such field     com.brilliance.model.report.notify.Details.Transactional
---- Debugging information ----
field               : Transactional
class               : com.brilliance.model.report.notify.Details
required-type       : com.brilliance.model.report.notify.Details
converter-type      :     com.thoughtworks.xstream.converters.reflection.ReflectionConverter
path                : /NewDataSet/Transactional
version             : 1.4.7

at     com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.handleUnknownField(AbstractReflectionConverter.java:495)
at     com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.do    Unmarshal(AbstractReflectionConverter.java:351)

.. .. ..

我的问题是——我们是否有办法为两个不同的 java 类定义相同的别名,以便通过 XStream 使用? (

【问题讨论】:

    标签: xstream


    【解决方案1】:

    我也有类似的问题。通过为每个类创建新的 xstream 实例然后处理注释来解决问题。

    【讨论】:

      猜你喜欢
      • 2012-09-21
      • 2013-01-21
      • 2022-07-22
      • 2011-10-13
      • 2019-04-03
      • 1970-01-01
      • 2017-09-26
      • 2022-11-22
      • 1970-01-01
      相关资源
      最近更新 更多