第三方接口xml格式转化为json格式

1、首先根据xml文件返回的格式,按照层级建立相应的实体类,xml文件格式如下:

这是从第三方接口拿到的整体的一个返回格式。呢相应的最外层也就是<track></track>, 下一层也就是<link_statistic></link_statistic>,依次类推即可。

2、实体类的创建如下:

=》这是最外层实体类

@XmlRootElement(name = "track")
@XmlAccessorType(XmlAccessType.FIELD)
@Data
public class TrackEntity {

    @XmlElement(name = "track_id")
    private String track_id;//跟踪统计id

    //中间省略了,自行补充......

    @XmlElement(name = "click_ratio")
    private String click_ratio;//点击率

    //下面这段代码是要关联你xml文件下一层级的
    @XmlElements({@XmlElement(name="link_statistic")})
    private String link_statistic;

}

=》下一层如下:

@XmlRootElement(name = "link_statistic")
@XmlAccessorType(XmlAccessType.FIELD)
@Data
public class LinkStatistic {

    @XmlElements({@XmlElement(name="link")})
    private List<Link> link;

}

=》最后一层:

@XmlRootElement(name = "link")
@XmlAccessorType(XmlAccessType.FIELD)
@Data
public class Link {

    @XmlElement(name = "link_id")
    private String link_id;//链接 id

    //中间省略,自行补充。。。。

    @XmlElement(name = "click_last")
    private String click_ratio;//最后点击时间
}

3、最重要的工具类如下:

package com.unilog.meishe.util;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import java.io.Reader;
import java.io.StringReader;

public class XmlBuilder {

    /**
     * 将XML转为指定的POJO
     * @param clazz
     * @param xmlStr
     * @return
     * @throws Exception
     */
    public static Object xmlStrToOject(Class<?> clazz, String xmlStr) throws Exception {
        Object xmlObject = null;
        Reader reader = null;
        JAXBContext context = JAXBContext.newInstance(clazz);

        // XML 转为对象的接口
        Unmarshaller unmarshaller = context.createUnmarshaller();

        reader = new StringReader(xmlStr);
        xmlObject = unmarshaller.unmarshal(reader);

        if (null != reader) {
            reader.close();
        }

        return xmlObject;
    }

4、调用方式附上:

public static void main(String[] args) {
        try {
            //调用的第一个参数为:实体类本身
            //第二个参数为:对应的xml文件格式
            TrackEntity trackEntity = 
                     (TrackEntity) XmlBuilder.xmlStrToOject(TrackEntity.class,getTrack());
            System.out.println(trackEntity);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

最后说明一下,这只是我现在使用的方法,我相信还有比我这个更简便的。

好了,本片文章到此结束,再见!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值