如何在Mirth自定义SOAP WebService中创建嵌套数组
在Mirth自定义WebService中实现SOAP嵌套数组的解决方案
我懂你现在的处境——在Mirth里开发自定义WebService,想要在SOAP结构里搞嵌套数组,还特意避开外部JAR包,已经写了带Getter/Setter的实体类但卡在嵌套结构这一步对吧?
首先你当前的实体类里用了String[] Code和String[] Description这种分开的一维数组,但如果要实现嵌套数组(也就是数组元素是包含多字段的对象),这种方式肯定满足不了需求。咱们得调整实体类的结构,用嵌套实体类的方式来实现,这样Mirth内置的SOAP序列化机制就能自动识别出嵌套结构,完全不用依赖外部包。
步骤1:定义嵌套的子实体类
把关联的Code和Description字段封装成一个独立的子实体类,这样每一组代码和描述就变成了一个对象:
public class CodeDescription { private String Code; private String Description; // Getter方法 public String getCode() { return Code; } public String getDescription() { return Description; } // Setter方法 public void setCode(String code) { Code = code; } public void setDescription(String description) { Description = description; } }
步骤2:修改主实体类,替换为子实体数组
把原来分开的两个一维数组,替换成子实体类的数组,这样就形成了嵌套数组的结构:
public class ResultSpecification { private String AccessionNumber; private String AddtionalPatientHistory; private long FacilityCode; // 用嵌套实体数组替代分开的字段数组 private CodeDescription[] codeDescriptions; // AccessionNumber的Getter/Setter public String getAccessionNumber() { return AccessionNumber; } public void setAccessionNumber(String accessionNumber) { AccessionNumber = accessionNumber; } // AddtionalPatientHistory的Getter/Setter public String getAddtionalPatientHistory() { return AddtionalPatientHistory; } public void setAddtionalPatientHistory(String addtionalPatientHistory) { AddtionalPatientHistory = addtionalPatientHistory; } // FacilityCode的Getter/Setter public long getFacilityCode() { return FacilityCode; } public void setFacilityCode(long facilityCode) { FacilityCode = facilityCode; } // 嵌套数组的Getter/Setter public CodeDescription[] getCodeDescriptions() { return codeDescriptions; } public void setCodeDescriptions(CodeDescription[] codeDescriptions) { this.codeDescriptions = codeDescriptions; } }
步骤3:Mirth WebService配置注意事项
- 把这些实体类放在Mirth的自定义代码库中,或者直接在WebService的代码块里定义,确保Mirth的类加载器能正常加载它们。
- 当你在WebService中返回
ResultSpecification对象时,Mirth内置的SOAP序列化器会自动把嵌套数组转换成对应的SOAP结构,示例结构大概是这样:
TEST-001 1001 ICD-10:J45支气管哮喘 ICD-10:I10原发性高血压
额外提示
如果需要更复杂的多层嵌套结构,只需要按照同样的逻辑继续封装子实体类就行,Mirth基于JAX-WS的轻量SOAP实现完全支持这种嵌套实体数组的序列化,完全符合你不想依赖外部JAR的需求。
内容的提问来源于stack exchange,提问作者Vibin Guevara
相关产品推荐
相关产品推荐

