摆脱由于 Double Enum 导致的 Json 解析错误问题

问题描述 投票:0回答:1

我在下面写了一个枚举、键和值对;

public enum DoubleEnum {
  ZERO_PERCENT(0.0),
  ONE_PERCENT(1.0),
  EIGHT_PERCENT(8.0),
  FIFTEEN_PERCENT(15.0),
  TWENTY_PERCENT(20.0);

  private final Double value;

  TaxBracket(Double value) {
    this.value = value;
  }

  public static DoubleEnum fromValue(Double value) {
    for (DoubleEnum doubleEnum : DoubleEnum.values()) {
      if (doubleEnum.value.equals(value)) {
        return doubleEnum;
      }
    }
    throw new IllegalArgumentException("Unknown : " + value);
  }
}

但是当我邮递员请求发送 DoubleEnum 的值时; 15.0,我收到错误响应;

[org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `com.example.model.enums.DoubleEnum` from Floating-point value (token `JsonToken.VALUE_NUMBER_FLOAT`)]

我该如何解决这个问题?任何帮助将不胜感激,谢谢

我不知道如何解决?

java spring spring-boot java-8
1个回答
0
投票

我该如何解决这个问题?任何帮助将不胜感激,谢谢

尝试使用 Jackson 的

@JsonFormat
注释来指定枚举值应如何序列化和反序列化。

import com.fasterxml.jackson.annotation.JsonFormat;

@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum DoubleEnum {
 ...

这样每个枚举值将被序列化为一个对象,其值字段包含双精度值。

© www.soinside.com 2019 - 2024. All rights reserved.