我有一个java类,其中的成员使用XstreamAlias注释进行注释。在某些情况下,我想用不同的注释输出相同的类(及其成员递归)。 如何让Xstream使用不是@XstreamAlias注释的方法/类注释?
答案 0 :(得分:1)
您无法使XStream使用不同的注释,但您可以在代码中定义不同的别名。
@XStreamAlias("abc")
public class Abc
{
@XStreamAlias("bb")
public String a;
}
当您使用注释序列化上述类时,您将获得以下xml
<abc>
<bb>something</bb>
</abc>
禁用注释并定义新别名时
XStream xstream = new XStream();
xstream.autodetectAnnotations(false);
xstream.alias("xxx", Abc.class);
xstream.aliasField("ccc", Abc.class, "a");
您将获得不同的xml输出
<xxx>
<ccc>something</ccc>
</xxx>
可用别名方法列表:
将Class别名为要在XML元素中使用的较短名称。
public void alias(String name, Class type)
将类型别名为要在XML元素中使用的较短名称。任何可分配给此类型的类都将使用相同名称别名。
public void aliasType(String name, Class type)
将Class别名为要在XML元素中使用的较短名称。 defaultImplementation表示如果没有其他指定的类型的默认实现类型。
public void alias(String name, Class type, Class defaultImplementation)
将包别名为要在XML元素中使用的较短名称。
public void aliasPackage(String name, String pkgName)
为字段名称创建别名。
public void aliasField(String alias, Class definedIn, String fieldName)
为属性
创建别名public void aliasAttribute(String alias, String attributeName)
为系统属性创建别名。如果别名设置为<code>null</code>
,则XStream不会写入系统属性。但是,这是不可逆的,即结果的反序列化很可能在之后失败,并且不会产生与最初写入的对象相等的对象。
public void aliasSystemAttribute(String alias, String systemAttributeName)
为属性创建别名。
public void aliasAttribute(Class definedIn, String attributeName, String alias)