请教一个xml转json的问题

xml转json时,一个list节点下面正好只有一个元素怎么办? 不就转成 json对象 了么?

给你一个思路 我以前写的
XMLWriter writer = null;// 声明写XML的对象
SAXReader reader = new SAXReader();
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");// 设置XML文件的编码格式
String filePath = "测试导入.xml";
File file = new File(filePath);
Document dom = reader.read(file);
Element root = dom.getRootElement();
String rootXmlText=root.asXML();
Document dom1 = DocumentHelper.parseText(rootXmlText);
Element root1 = dom1.getRootElement();
Iterator iter = root1.elementIterator("errorResultList");//获取标签元素值
while (iter.hasNext()) {
Element recordEle = (Element) iter.next();
String text=recordEle.asXML();
org.json.JSONObject xmlJSONObj = XML.toJSONObject(text);
JSONObject j=JSON.parseObject(xmlJSONObj.get("errorResultList").toString());

}
你现在主要的问题就是1.拿到errorResultList,并循环errorResult 2.把errorResult转换成json,
我的while循环里面的那几个方法就是转换json的,你看看适不适用你这个业务。多尝试

xml文件的格式贴出来下呗

 <response>
    <success>false</success>
    <retryLater>false</retryLater>
    <errorCode>BATCH_OPERATE_ERROR</errorCode>
    <errorMsg>batch operate error , please pay attention to errorResultList</errorMsg>
    <errorResultList>
        <errorResult>
            <objectId>201808061423522459</objectId>
            <errorInfoList>
                <errorInfo>
                    <errorCode>ILLEGAL_PARAMETER_ERROR</errorCode>
                    <errorMsg>addressPair.receiveAddress.provinceName为空</errorMsg>
                </errorInfo>
            </errorInfoList>
        </errorResult>
    </errorResultList>
</response>

errorResult可以多个

依赖com.alibabafastjson1.2.8com.itextpdfitextpdf<!-- 5.4.3 -->5.5.9com.itextpdfitext-pdfa5.5.9com.itextpdfitext-xtra5.4.4com.itextpdf.toolxmlworker5.5.9com.itextpdfitext-asian5.2.0还一个dom4j的依赖 自己找一下

 public QueueParam readXml(String path) {
        QueueParam queueParam = new QueueParam();
        try {
            SAXReader reader = new SAXReader();
            Document doc = reader.read(new File(path));
            Element root = doc.getRootElement();
            List<Element> list = root.elements();
            Element batchIdEle = list.get(0).element("batchId");
            String batchId = batchIdEle.getText();
            String userId = list.get(0).elementText("userId");
            String taskId = list.get(0).elementText("taskId");
            String data = list.get(0).elementText("data");
            queueParam = new QueueParam(taskId, batchId, userId, data);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return queueParam;
    }

 package com.ifly.ibk.pojo;

public class QueueParam {

    private String taskid;
    private String batchid;
    private String userid;
    private String data;

    public QueueParam() {
    }

    public QueueParam(String taskid, String batchid, String userid, String data) {
        this.taskid = taskid;
        this.batchid = batchid;
        this.userid = userid;
        this.data = data;
    }

    public String getTaskid() {
        return taskid;
    }

    public void setTaskid(String taskid) {
        this.taskid = taskid;
    }

    public String getBatchid() {
        return batchid;
    }

    public void setBatchid(String batchid) {
        this.batchid = batchid;
    }

    public String getUserid() {
        return userid;
    }

    public void setUserid(String userid) {
        this.userid = userid;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("{");
        sb.append("\"taskid\":\"")
                .append(taskid).append('\"');
        sb.append(",\"batchid\":\"")
                .append(batchid).append('\"');
        sb.append(",\"userid\":\"")
                .append(userid).append('\"');
        sb.append(",\"data\":\"")
                .append(data).append('\"');
        sb.append('}');
        return sb.toString();
    }
}

只有一个和多个是一样的道理啊,你如果要返回list,就把一个对象add到list里面就行了啊