Me estoy haciendo debajo de la salida en el siguiente formato, que es la opción predeterminada que pienso.
{"count":100,"sum":25640.13,"min":2.65,"max":483.91,"average":256.4013}
Pero quiero cambiar este formato de la siguiente manera.
{"sum":"25640.13","avg":"256.40","max":"483.91","min":"2.65","count":100}
A continuación código que estoy utilizando en clase java.
@Override
public DoubleSummaryStatistics getStatistic() {
logger.info("Getting statistic");
Set<Entry<Long, Transaction>> endtrySet = statisticHistory.entrySet();
List<Double> amountList = new ArrayList<>();
for (Entry<Long, Transaction> entry : endtrySet) {
if (((entry.getValue().getDate())).isAfter(Instant.now().minusSeconds(windowInMs)))
amountList.add((entry.getValue().getAmount()).doubleValue());
}
return amountList.stream().mapToDouble((x) -> x).summaryStatistics();
}
¿Cómo puedo cambiar el formato JSON?
Para una mayor comprensión, pegando método anterior con una sintaxis sencilla. Ejemplo de Método de código ..
public DoubleSummaryStatistics getStatisdtic() {
logger.info("Getting statistic");
Set<BigDecimal> endtrySet = null ; //= getting this from a other resource
List<Double> amountList = new ArrayList<>();
for (BigDecimal entry : endtrySet) {
amountList.add((entry).doubleValue());
}
return amountList.stream().mapToDouble((x) -> x).summaryStatistics();
}
Dado que no se puede editar DoubleSummaryStatistics
(no se puede añadir sus propias anotaciones JSON específicos dentro de él), lo que puede hacer es crear su propia clase MyDoubleSummaryStatistics
que se crea a partir de cualquier resultado que desea.
Pero en el caso que está llamando toString
en que DoubleSummaryStatistics
, por qué no llamar a cada campo por separado de ella, como DoubleSummaryStatistics ::getAverage
y similares, y la acumulación cualquier cadena que necesita / quiere.