Преобразование DTO в массив DTO - PullRequest
0 голосов
/ 28 мая 2020

Я работаю над проектом, в котором у меня есть этот ответ в качестве вывода.

  "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;
    }

}

Лог c услуги. Служба была подготовлена ​​для возврата ContractDTO, который является объектом.

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

Есть ли способ преобразовать этот ответ в массив?

Результат, который я хочу, приведен ниже, а не массив объектов.

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

Ответы [ 4 ]

0 голосов
/ 28 мая 2020

Вам нужен list.toArray() метод.

    List<ContractDTO> c = List.of( new ContractDTO(), new ContractDTO() );
    ContractDTO[] result = c.toArray( new ContractDTO[0] );
    System.out.println( Arrays.toString( result ) );
0 голосов
/ 28 мая 2020

Если вы получили ответ правильно, просто построите результат как List.

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

// or
List<ContractDTO> dtoList = new ArrayList<>();
dtoList.add(new ContractDTO());
dtoList.add(new ContractDTO());
0 голосов
/ 28 мая 2020

Вы можете попробовать этот подход.

@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;
    }

}
0 голосов
/ 28 мая 2020

В этом случае вы можете просто вернуть только List<ContractDTO> (вам не нужна специальная оболочка).

...