簡體   English   中英

Spring rest 服務使用 @RestController 返回多個實體類作為 xml 響應

[英]Spring rest service to return multiple entity classes as xml response using @RestController

我們如何在 spring rest 服務中返回多個實體類作為 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 我將兩個實體類結合在一起。

@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>標記代表 List 而子</Response>代表List中的元素

為了實現您想要的有效負載, 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 中的Data替換List<Employee>

重命名字段和吸氣劑

// private List<Employee> Employee = new ArrayList<Employee>();
private List<Employee> Data = new ArrayList<Employee>();

或將注釋@XmlElement(name="Data")添加到字段或吸氣劑(不確定)

並更改字段(也是吸氣劑)

// private List<Response> Response = new ArrayList<Response>();
private Response Response = new Response();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM