public class PlayerRow extends PlayerApiResponseRow {
private String txt;
private Bigdecimal amount;
private Long players;
}
Выше - объект, отправляемый в responseEntity
@Data
@NoArgsConstructor
public class PlayerApiResponseRow {
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonPropertyOrder({ "status", "response" })
public class BetApiResponse {
private ResponseStatus status;
private BetApiResponseResponse response;
}
public class BetApiResponseResponse {
@JsonProperty(value = "num_rows")
private long numRows;
private List<String> columns;
private List<PlayerApiResponseRow> rows;
}
И заглушка, как показано ниже,
public class playerStub{
public ResponseEntity<BetApiResponse> data(@RequestHeader(value = "REPORTS") String reports,
@ApiParam(value = "Format: YYYY-MM-DD, 1111-mm-dd to activate sleep")
@RequestParam(value = "start") String start,
@RequestParam(value = "end") String end) {
// some code goes here
ArrayList<PlayerApiResponseRow> rows = new ArrayList<>();
rows.add(new PlayerRow(dateStr, BigDecimal.valueOf(656752), 2147480L);
rows.add(new PlayerRow(dateStr2, BigDecimal.valueOf(12232), 21480L);
// Some code
BetApiResponseResponse response = new BetApiResponseResponse(rows.size(), columns, rows);
BetApiResponse betApiResponse = new BetApiResponse(status, response);
return new ResponseEntity<>(playerApiResponseRow, HttpStatus.OK);
}
}
в rows
есть 2 объекта PlayerRow с поля Bigdecimal
и Long
и объект ответа BetApiResponseResponse
имеет список PlayerApiResponseRow.
Когда я вызываю эту заглушку локально с заданными значениями в строках, т.е. BigDecimal.valueOf(656752)
, 2147480L
, BigDecimal.valueOf(12232), 21480L
эти числа теряют свой тип данных до целого числа.
И если указать значение как BigDecimal.valueOf(656752.89)
, 21474802444445345L
, BigDecimal.valueOf(12232.67), 214805645645L
, т.е. с десятичной точкой и большим числом, чем целочисленный диапазон с L, тогда оно передается как double и long.
Если я вижу возвращаемый объект в вызывающем методе во время отладки в качестве ответа, эти объекты имеют типы данных как Integer, я не мог понять, почему они не передаются с исходным типом данных. Ниже приведен код в вызывающем методе,
ResponseEntity<JsonNode> response = methodcall(url, startDate, endDate, callForStubService);
Есть ли у кого-нибудь предложения, которые я могу попробовать, или какой-либо документ, который я могу прочитать по этому поводу.
Я использую spring boot 2.1 и jakson2.9, java 11
Извините за длинное описание