Spring 对 return 多个实体 类 的休息服务作为 xml 使用@RestController 的响应
Spring rest service to return multiple entity classes as xml response using @RestController
我们如何在 spring 休息服务中 return 多个实体 class 作为 XML 响应?
示例:我需要如下响应
<GetEmployeeById>
<Response>
<Status>0</Status>
<Message>Data found</Message>
</Response>
<Data>
<Employee>
<Id> 2 </Id>
<Name> Mani M </Name>
<Job> SOftware Developer </Job>
<Salary> 40000 </Salary>
</Employee>
</Data>
</GetEmployeeById>
在这里,Response 和 Employee 是独立的实体。我的代码收到以下 XML 响应。这里的问题是,我在响应节点内获取响应节点,在员工节点内获取员工节点。
<GetEmployeeById>
<Response>
<Response>
<Status>0</Status>
<Message>Data found</Message>
</Response>
</Response>
<Employee>
<Employee>
<Id>2</Id>
<Name>Mani M</Name>
<Job>SOftware Developer</Job>
<Salary>12000</Salary>
</Employee>
</Employee>
</GetEmployeeById>
以下是 java class,我在其中合并实体 classes。
@XmlRootElement (name="GetEmployeesById")
public class GetEmployeesById implements Serializable{
private static final long serialVersionUID = 1L;
private List<Employee> Employee = new ArrayList<Employee>();
private List<Response> Response = new ArrayList<Response>();
public List<Employee> getEmployee() {
return Employee;
}
public void setEmployee(List<Employee> employee) {
Employee = employee;
}
public List<Response> getResponse() {
return Response;
}
public void setResponse(List<Response> Response) {
Response = Response;
}
}
请帮我解决这个问题。
这里的问题是 List<CustomResponse>
,因为它是 List
,父 </Response>
标签代表列表,子 </Response>
代表 [= 中的元素12=]
为了达到您想要的负载,Response
不能是 List
,必须是 CustomResponse
。
至于你的数据节点,你可能想尝试创建一个新的 class 如下
@XmlRootElement(name = "Data")
public class Data implements Serializable {
private static final long serialVersionUID = 1L;
@XmlElement(name = "Employee")
private List<Employee> employees
}
然后您可以在 GetEmployeesById
class
中将 List<Employee>
替换为 Data
重命名字段并 getters
// private List<Employee> Employee = new ArrayList<Employee>();
private List<Employee> Data = new ArrayList<Employee>();
或在字段中添加注释 @XmlElement(name="Data")
或 getter(不确定)
并更改字段(也 getters)
// private List<Response> Response = new ArrayList<Response>();
private Response Response = new Response();
我们如何在 spring 休息服务中 return 多个实体 class 作为 XML 响应?
示例:我需要如下响应
<GetEmployeeById>
<Response>
<Status>0</Status>
<Message>Data found</Message>
</Response>
<Data>
<Employee>
<Id> 2 </Id>
<Name> Mani M </Name>
<Job> SOftware Developer </Job>
<Salary> 40000 </Salary>
</Employee>
</Data>
</GetEmployeeById>
在这里,Response 和 Employee 是独立的实体。我的代码收到以下 XML 响应。这里的问题是,我在响应节点内获取响应节点,在员工节点内获取员工节点。
<GetEmployeeById>
<Response>
<Response>
<Status>0</Status>
<Message>Data found</Message>
</Response>
</Response>
<Employee>
<Employee>
<Id>2</Id>
<Name>Mani M</Name>
<Job>SOftware Developer</Job>
<Salary>12000</Salary>
</Employee>
</Employee>
</GetEmployeeById>
以下是 java class,我在其中合并实体 classes。
@XmlRootElement (name="GetEmployeesById")
public class GetEmployeesById implements Serializable{
private static final long serialVersionUID = 1L;
private List<Employee> Employee = new ArrayList<Employee>();
private List<Response> Response = new ArrayList<Response>();
public List<Employee> getEmployee() {
return Employee;
}
public void setEmployee(List<Employee> employee) {
Employee = employee;
}
public List<Response> getResponse() {
return Response;
}
public void setResponse(List<Response> Response) {
Response = Response;
}
}
请帮我解决这个问题。
这里的问题是 List<CustomResponse>
,因为它是 List
,父 </Response>
标签代表列表,子 </Response>
代表 [= 中的元素12=]
为了达到您想要的负载,Response
不能是 List
,必须是 CustomResponse
。
至于你的数据节点,你可能想尝试创建一个新的 class 如下
@XmlRootElement(name = "Data")
public class Data implements Serializable {
private static final long serialVersionUID = 1L;
@XmlElement(name = "Employee")
private List<Employee> employees
}
然后您可以在 GetEmployeesById
class
List<Employee>
替换为 Data
重命名字段并 getters
// private List<Employee> Employee = new ArrayList<Employee>();
private List<Employee> Data = new ArrayList<Employee>();
或在字段中添加注释 @XmlElement(name="Data")
或 getter(不确定)
并更改字段(也 getters)
// private List<Response> Response = new ArrayList<Response>();
private Response Response = new Response();