xstream中数组解析注解

解析数组用下面这个注解

@XStreamImplicit(itemFieldName = "xmlName")

背景介绍

最近和丰桥对接,丰桥的接口的请求和相应都是 xml 格式,此前搞微信公众号开发接触过 xml 的解析,当时还没遇到这个坑。以为解析所有 xml 都是用同一个注解 @XStreamAlias(“xmlName”) ,这次遇相应快递路由状态信息是数组,就踩坑了。

常用注解

  • @XStreamAlias

    • 作用就是将属性按照别名输出
  • @XStreamAsAttribute

    • 作用是将类内成员作为父节点属性输出
  • @XStreamImplicit

    • 集合常用的注解

小试牛刀

这是丰桥路由查询失败返回结果
<Response service=”RouteService”>
    <Head>ERR</Head>
    <ERROR code="4001">系统发生数据错误或运行时异常</ERROR>
</Response>
/**
 * @author yulecha
 * @version 1.0.0
 * @ClassName SFExpressBaseResponse.java
 * @Description 基础响应类
 * @createTime 2019年11月25日 13:43:00
 */
@Data
@XStreamAlias(value = "Response")
public class SFExpressBaseResponse {
    @XStreamAlias("Head")
    private String head;

    @XStreamAsAttribute
    @XStreamAlias(value = "service")
    private String service;

    @XStreamAlias("ERROR")
    private SFExpressError error;
}
/**
 * @author yulecha
 * @version 1.0.0
 * @ClassName SFExpressError.java
 * @Description 错误码及信息
 * @createTime 2019年11月25日 10:20:00
 */
@Data
@XStreamAlias("ERROR")
@XStreamConverter(value = ToAttributedValueConverter.class, strings = { "content" })
public class SFExpressError {

    @XStreamAsAttribute
    @XStreamAlias("code")
    private String code;

    private String content;
}
/**
 * @author yulecha
 * @version 1.0.0
 * @ClassName XmlTest.java
 * @Description xml解析测试类
 * @createTime 2019年11月25日 09:44:00
 */
public class XmlTest {

    String xmlError = "<Response service=\"RouteService\">" +
                            "<Head>ERR</Head>" +
                            "<ERROR code=\"4001\">系统发生数据错误或运行时异常</ERROR>" +
                       "</Response>";

    @Test
    public void xmlParaseObjectTest() {
        SFExpressBaseResponse sfExpressBaseResponse = XmlParseUtil.parseObject(xmlError, SFExpressBaseResponse.class);
        System.out.println(sfExpressBaseResponse);
    }
}
结果
SFExpressBaseResponse(head=ERR, service=RouteService, error=SFExpressError(code=4001, content=系统发生数据错误或运行时异常))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值