dromara / hutool

🍬A set of tools that keep Java sweet.
https://hutool.cn
Other
28.91k stars 7.48k forks source link

JSONUtil 能用Jackson的注解吗?要如何才能兼容 #3633

Closed Yangqi0338 closed 2 months ago

Yangqi0338 commented 2 months ago

版本情况

JDK版本: openjdk_8_201 hutool版本: 5.8.28(请确保最新尝试是否还有问题)

问题描述(包括截图)

枚举的getCode方法加了@JsonValue的序列化注解,如果我的DTO里有这个枚举,序列化出来的值是code。 但是JSONUtil.toJsonStr 会将序列化枚举的name

  1. 复现代码
@Getter
@AllArgsConstructor
public enum ReplayRatingDetailType {
    /**/
    RATING("评分"),

    NEXT_IMPROVE("后续改善"),
    ;
    /** 编码 */
    @EnumValue
    private final String code;
    /** 文本 */
    private final String text;

    ReplayRatingDetailType(String text) {
        String code = this.name().toLowerCase();
        this.code = StrUtil.toCamelCase(code);
        this.text = text;
    }

    public static ReplayRatingDetailType findByCode(String code) {
        return Arrays.stream(ReplayRatingDetailType.values()).filter(it -> it.code.equals(code)).findFirst().orElse(null);
    }

    @JsonValue
    public String getCode() {
        return code;
    }

}
  1. 堆栈信息

  2. 测试涉及到的文件(注意脱密)

比如报错的Excel文件,有问题的图片等。

looly commented 2 months ago

不能兼容。

可以使用JSONSerializer完成自定义序列化。