java自定义转换器作用_java – xstream – 在自定义转换器中重用默认转换器

我正在使用xstream来处理xml字符串,但是对象的某些字段在版本之间发生了变化,所以我正在实现

自定义转换器.下面列出了字段更改的摘要,只有前两种字段类型不同.

Field type1 type2

a short String

b String Object

c List List

d Object Object

.

.

.

x String String

我的当前转换器被实现为专门处理每个字段,这导致unmarshal()方法中的大量“else if”条件

package a.b.c.reports;

import com.thoughtworks.xstream.converters.Converter;

import com.thoughtworks.xstream.converters.MarshallingContext;

import com.thoughtworks.xstream.converters.UnmarshallingContext;

import com.thoughtworks.xstream.io.HierarchicalStreamReader;

import com.thoughtworks.xstream.io.HierarchicalStreamWriter;

public class MyConverter implements Converter {

..

@Override

public Object unmarshal(HierarchicalStreamReader reader,UnmarshallingContext context) {

while (reader.hasMoreChildren()) {

reader.moveDown();

if(reader.getNodeName().equals("a"))

{

a = reader.getValue();

}

else if (reader.getNodeName().equals("b"))

{

b = (Object) context.convertAnother(reader, Object.class);

}

else if(reader.getNodeName().equals("c"))

{

a = reader.getValue();

}

..

..

}

}

是否有更智能的方法将类型未更改的字段处理委派给默认的xstream转换器?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值