gpt4 book ai didi

java - 在API响应中返回Enum的值而不是Spring boot中的名称

转载 作者:行者123 更新时间:2023-11-30 01:42:39 26 4
gpt4 key购买 nike

我有一个枚举定义如下:

public enum IntervalType {
HOUR(3600),
DAY(3600*24),
WEEK(3600*24*7),
MONTH(3600*24*30);

public Integer value;

IntervalType() {}

IntervalType(Integer value) {
this.value = value;
}

@JsonValue
public Integer toValue() {
return this.value;
}

@JsonCreator
public static IntervalType getEnumFromValue(String value) {
for (IntervalType intervalType : IntervalType.values()) {
if (intervalType.name().equals(value)) {
return intervalType;
}
}
throw new IllegalArgumentException();
}

@Override
public String toString() {
return this.name();
}
}

我的响应类定义如下:

@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class IntervalType {

@JsonProperty("interval_type")
@Enumerated(EnumType.STRING)
private IntervalType intervalType;
}

我正在尝试使用响应实体从我的 Spring Boot 应用程序返回此值,并且它给出枚举的值而不是名称。

我需要做什么来更改响应以使其具有名称而不是枚举值?

最佳答案

您必须添加一个以值作为参数的构造函数:

public enum IntervalType {
HOUR(3600),
DAY(3600*24),
WEEK(3600*24*7),
MONTH(3600*24*30);

private int value;

...

private IntervalType(int value) {
this.value = value;
}

public int getValue() {
return this.value;
}
}

那么一般来说你这样调用它:

System.out.println(IntervalType.DAY.getValue()); // -> 86400
System.out.println(IntervalType.DAY); // -> DAY

关于java - 在API响应中返回Enum的值而不是Spring boot中的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59425368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com