簡體   English   中英

將 DTO 轉換為 DTO 數組

[英]Convert DTO to an array of DTO's

我正在做一個項目,我的響應是 output。

  "data": {
            "PERCENT_INTERES": 0.9,
            "TERM": 1
        }

我有這個設置結果的 DTO

public class ContractDTO {

    @JsonProperty("PERCENT_INTERES")
    private Float percent;
    @JsonProperty("TERM")
    private Integer term;

    //GETTERS AND SETTERS
}

但是現在我需要得到一個 DTO 的數組。 我嘗試使用此 DTO 列出 dto,但它不起作用。

public class ContractArrayDTO {

    public List<ContractDTO> result;

    public List<ContractDTO> getResult() {
        return result;
    }

    public void setResult(List<ContractDTO> result) {
        this.result = result;
    }

}

服務的邏輯。 該服務准備返回一個 ContractDTO,它是一個 object。

 ContractDTO res = new ContractDTO();
 res.setTerm(1);
 res.setPercent(0,9);

有沒有辦法將該響應轉換為數組?

我想要的結果是下面的結果,而不是對象數組。

 "data": { [PERCENT_INTERES: 0.9, TERM: 1] }

在這種情況下,您可以只返回List<ContractDTO> (您不需要自定義包裝器)。

當您正確獲得響應時,只需將結果構建為List

List<ContractDTO> dtos = Arrays.asList(new ContractDTO(), new ContractDTO());

// or
List<ContractDTO> dtoList = new ArrayList<>();
dtoList.add(new ContractDTO());
dtoList.add(new ContractDTO());

你可以試試這個方法。

@RestController
public class Controller {

    @GetMapping(value="/get")
    public List<ContractDTO> get() {
        List<ContractDTO> list=new ArrayList<>();

        ContractDTO dto=new  ContractDTO();
        dto.setPercent((float) 1.24);
        dto.setTerm(1);
        list.add(dto);


        dto=new  ContractDTO();
        dto.setPercent((float) 1.44);
        dto.setTerm(2);
        list.add(dto);

        return list;
    }

}

您需要的是list.toArray()方法。

    List<ContractDTO> c = List.of( new ContractDTO(), new ContractDTO() );
    ContractDTO[] result = c.toArray( new ContractDTO[0] );
    System.out.println( Arrays.toString( result ) );

暫無
暫無

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

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