#java #json #spring-boot #double #response
#java #json #spring-boot #double #ответ
Вопрос:
У меня есть объект, который приведен ниже:
public class Statics {
private Double sum;
private Double avg;
private Double max ;
private Double min ;
private Long count = Long.valueOf(0);//getter and setters and constructrures}
и у меня есть контроллер, который возвращает этот объект:
@GetMapping("/statistics")
@ResponseStatus(HttpStatus.OK)
public ResponseEntity<?> getStatics(){
return ResponseEntity.status(HttpStatus.OK).body(staticService.getStatics());
}
и реализация сервиса :
private Statics statistics;
public Statics getStatics() {
if (statistics == null) {
Dou
ble Zero =BigDecimal.valueOf(0.00).setScale(2, RoundingMode.HALF_UP).doubleValue();
statistics = new Statics(Zero, Zero, Zero, Zero, Long.valueOf(0));
}
return statistics;
}
@Async
public void statisticAnalysis() {
DoubleSummaryStatistics stat = TRANSACTION_LIST.stream().mapToDouble(Transaction::getAmount)
.summaryStatistics();
statistics = new Statics(BigDecimal.valueOf(stat.getSum()).setScale(2, RoundingMode.HALF_UP).doubleValue(), BigDecimal.valueOf(stat.getAverage()).setScale(2, RoundingMode.HALF_UP).doubleValue(), BigDecimal.valueOf(stat.getMax()).setScale(2, RoundingMode.HALF_UP).doubleValue(), BigDecimal.valueOf(stat.getMin()).setScale(2, RoundingMode.HALF_UP).doubleValue(), stat.getCount());
}
Я хочу, чтобы мой вывод был похож на ожидаемый в mage, который я прикреплю ниже, [«сумма»: «100» в двойных кавычках], но он всегда возвращает число без кавычек, что мне делать?
Ответ №1:
Используйте String
вместо Double
того, чтобы выполнять вычисления при удвоении значения преобразования в String.ValueOf(sum)
и присваивать значение вашему statistics
POJO.
Конвертируйте POJO, как показано ниже
public class Statics {
private String sum;
private String avg;
private String max;
private String min;
private Long count = Long.valueOf(0);//getter and setters and constructrures
}
Комментарии:
1. Я решил свою проблему, пожалуйста, проверьте другой ответ. кстати, спасибо.
2. @Nejatians Это решит вашу проблему, я согласен, но влияет на производительность при синтаксическом анализе JSON.
Ответ №2:
public class Statics {
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Double sum;
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Double avg;
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Double max ;
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Double min ;
private Long count = Long.valueOf(0);
}
Используя эту аннотацию: @JsonFormat(shape = JsonFormat.Shape.STRING)
Решена моя проблема!