栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

初次使用XStream遇到的坑......

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

初次使用XStream遇到的坑......

第一个坑:

XStream解析xml的时候报错AbstractReflectionConverter$UnknownFieldException.

问题描述:

        由于是第一次使用XStream,在使用XStream进行xml转换成Java实体类的时候,xml大部分的值都已经存进类中了,但是项目还是出现问题,经过调试,发现原来是转换的时候,xml有些值没有存进去,导致后面的逻辑不能正常运行。

xml的部分内容:


    
      450101
      450201
    

对应Receiver类的内容是:

@Data
public class Receiver {
    
    public List UnitIdentifier;

    public Receiver()
    {
        this.UnitIdentifier = new ArrayList<>();
    }
}

        经过分析后,发现xml文件中的 Receiver 标签是多个 UnitIdentifier 子标签构成的,所以实体类用 List< String> 来接收是正确的,但是要做标识,让 XStream 识别出这个属性的处理方式是转换成 List< String> 的,找到了问题所在,现在就是解决它了。

解决方法:

解决的方法就是使用 @XStreamImplicit 这个注解,这个注解的作用就是

@XStreamImplicit(itemFieldName = “CONDITION”) 指定被注解的List和Map被映射成多个CONDITION标签

最后Receiver类的内容就是:

@Data
public class Receiver {
    
    @XStreamImplicit(itemFieldName = "UnitIdentifier")
    public List UnitIdentifier;

    public Receiver()
    {
        this.UnitIdentifier = new ArrayList<>();
    }
}
第二个问题(其实不是坑,只是看着难受):

问题描述:

        在项目中使用XStream的时候,每次启动项目的控制台都会打印出下面红色的内容。


        其实是XStream的一种安全机制。

解决方法:

        加上下面的代码即可

xStream.allowTypesByRegExp(new String[] { ".*" });

先记录这么多,等往后遇到更多使用XStream的问题在继续写…

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/285508.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号