此问题在工作当中遇到过三次了,每次对象嵌套转xml就遇到此问题,这次记录下,以便下次遇到,能百度到自己的记录来解决!!!!!
异常: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
类的两个属性具有相同名称 "examinationItemDetails"
按照我当前类的写法 得需要从get方法上加@XmlTransient来避免此错误,因为想用lombok的@Data,并且写在get上比较乱,查看文档https://www.w3cschool.cn/jaxb2/jaxb2-q85r2zok.html
所以在类名上增加此属性,意思是只映射字段
完整model
package com.gmk.webservice.entity;
import lombok.Data;
import javax.xml.bind.annotation.*;
import java.util.List;
/**
* 描述:查询报告项目细项结果
*
* @author xianmin.yang
* @create 2021-08-31 9:49
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="Response")
@Data
public class PeItemResponseVo extends ResCommonVo{
@XmlElement(name = "ResultList")
private PeItemResponseVo.ResultVo resultVo;
@Data
@XmlAccessorType(XmlAccessType.FIELD)
public static class ResultVo{
private String total;
// @XmlElementWrapper(name = "ExaminationItem", nillable = true)
@XmlElement(name = "ExaminationItem")
private List<PeItemResponseVo.ExaminationItem> examinationItems;
}
@Data
@XmlAccessorType(XmlAccessType.FIELD)
public static class ExaminationItem{
//项目名称
private String itemDesc;
//项目ID
private String itemId;
//报告格式
private String reportFormat;
//检查医生
private String doctorName;
//审核医生
private String auditDoctorName;
//检查日期
private String examDate;
//站点编码
private String stationCode;
//站点名称
private String stationName;
//第一条 1是 0否
private String isFirst;
//最后一条 1是 0否
private String isLast;
@XmlElementWrapper(name = "ItemDetailList", nillable = true)
@XmlElement(name = "ExaminationItemDetail")
private List<PeItemResponseVo.ExaminationItemDetail> examinationItemDetails;
}
@Data
public static class ExaminationItemDetail{
//细项名称
private String itemDesc;
//英文缩写
private String itemAbbreviation;
//细项结果
private String itemResult;
//异常提示
private String exceptionTip;
//单位
private String itemUom;
//参考范围
private String referenceRange;
}
}
最终结果(嵌套对象转xml 得到第三方提供的接口格式)
<Response>
<ResultCode>0</ResultCode>
<ResultDesc>成功</ResultDesc>
<ResultList>
<total>1</total>
<ExaminationItem>
<itemDesc>内科检查</itemDesc>
<itemId>2132||1</itemId>
<reportFormat>RF_NOR</reportFormat>
<doctorName>Demo Group</doctorName>
<examDate>2017-08-25</examDate>
<stationCode>2</stationCode>
<stationName>内科</stationName>
<isFirst>1</isFirst>
<isLast>0</isLast>
<ItemDetailList>
<ExaminationItemDetail>
<itemDesc>心率</itemDesc>
<itemResult>89</itemResult>
<itemUom>次/分</itemUom>
<referenceRange>60-90</referenceRange>
</ExaminationItemDetail>
<ExaminationItemDetail>
<itemDesc>心脏节律</itemDesc>
<itemResult>整齐</itemResult>
<referenceRange>整齐</referenceRange>
</ExaminationItemDetail>
</ItemDetailList>
</ExaminationItem>
<ExaminationItem>
<itemDesc>常规心电图检查(12导联)</itemDesc>
<itemId>2132||5</itemId>
<reportFormat>RF_EKG</reportFormat>
<doctorName>Demo Group</doctorName>
<examDate>2017-08-25</examDate>
<stationCode>10</stationCode>
<stationName>心电图</stationName>
<isFirst>0</isFirst>
<isLast>1</isLast>
<ItemDetailList>
<ExaminationItemDetail>
<itemDesc>常规心电图检查(12导联)</itemDesc>
<itemResult>临床诊断:;检查所见:正常;诊断意见:异常</itemResult>
</ExaminationItemDetail>
</ItemDetailList>
</ExaminationItem>
</ResultList>
</Response>