xstream自定义转换_使用xstream自定义java集合的序列化

本文介绍了如何利用XStream的ClassAliasingMapper和registerLocalConverter方法来自定义Java集合(如List)的序列化过程,特别是针对特定类的字段进行转换。通过创建并注册CollectionConverter,可以实现将字符串类的别名映射到XML中的特定标签。
摘要由CSDN通过智能技术生成

出于兴趣,我尝试了这样做,而没有编写我自己的转换器。基本上我只是为某个类中的某个字段注册一个特殊的CollectionConverter指令版本。

相关片段:

ClassAliasingMapper mapper = new ClassAliasingMapper(xstream.getMapper());

mapper.addClassAlias("tag", String.class);

xstream.registerLocalConverter(

Test.class,

"tags",

new CollectionConverter(mapper)

);成熟的例子:

import com.thoughtworks.xstream.*;

import com.thoughtworks.xstream.converters.collections.*;

import com.thoughtworks.xstream.mapper.*;

import java.util.*;

public class Test {

public List tags = new ArrayList();

public List notags = new ArrayList();

public Test(String tag, String tag2) {

tags.add(tag); tags.add(tag2);

notags.add(tag); notags.add(tag2);

}

public static void main(String[] args) {

Test test = new Test("foo", "bar");

XStream xstream = new XStream();

ClassAliasingMapper mapper = new ClassAliasingMapper(xstream.getMapper());

mapper.addClassAlias("tag", String.class);

xstream.registerLocalConverter(

Test.class,

"tags",

new CollectionConverter(mapper)

);

System.out.println(xstream.toXML(test));

}

}

没有测试,但这应该工作。没有?

xstream.alias("tag", java.lang.String.class);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值