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

第一个坑:

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

问题描述:

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

xml的部分内容:

<Head>
    <Receiver>
      <UnitIdentifier>450101</UnitIdentifier>
      <UnitIdentifier>450201</UnitIdentifier>
    </Receiver>
</Head>

对应Receiver类的内容是:

@Data
public class Receiver {
    
    public List<String> 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<String> UnitIdentifier;

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

第二个问题(其实不是坑,只是看着难受😮):

问题描述:

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

在这里插入图片描述
        其实是XStream的一种安全机制。

解决方法:

        加上下面的代码即可

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

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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是哈猿啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值