com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter $ DuplicateFieldException:Duplicate field

时间:2014-01-23 11:40:30

标签: java xml xstream

field               : param
class               : xmleditor.domain.Type
required-type       : xmleditor.domain.Type
converter-type      : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
path                : /root/type/param[2]

我得到这个错误,我得到了重复的Param。但是当我尝试使用

xstream.addImplicitCollection

我收到此错误:

Exception in thread "main" com.thoughtworks.xstream.InitializationException: Field "param" declares no collection or array.

所以我真的不知道我的问题是什么。

 @XStreamAlias("root")
    public class Type {

        private Info info;
        @XStreamAlias("OBJECT_TYPE")
        private String objectType;
        private Properties prop;
        private Parameters param;
        private Restrictions restri;

        @XStreamImplicit(itemFieldName = "type")
        private List typeList = new ArrayList();
// Constructor, Getters and setters.

造成这个问题的原因是什么?

1 个答案:

答案 0 :(得分:3)

声明隐式集合意味着您在xml文档中的同一嵌套级别具有多个具有相同标记名称的xml元素。

要将这些映射到Java类,您需要使用Collection或Array来存储这些对象.XStream可以通过将这些元素作为隐式集合映射到对象结构来处理此问题。

因此,您需要将param变量更改为Collection或Array类型。也就是说,改变

从:

private Parameters param;

为:

@XStreamImplicit
private List<Parameters> param;