diff --git a/core/src/main/java/com/alibaba/fastjson2/reader/ObjectReaderImplEnum.java b/core/src/main/java/com/alibaba/fastjson2/reader/ObjectReaderImplEnum.java index e015241a11..bf5d53bc3a 100644 --- a/core/src/main/java/com/alibaba/fastjson2/reader/ObjectReaderImplEnum.java +++ b/core/src/main/java/com/alibaba/fastjson2/reader/ObjectReaderImplEnum.java @@ -268,7 +268,7 @@ public Object readObject(JSONReader jsonReader, Type fieldType, Object fieldName // ignored } } - } else if (intValues != null && jsonReader.isString()) { + } else if (intValues != null && jsonReader.isInt()) { int intValue = jsonReader.readInt32Value(); for (int i = 0; i < intValues.length; i++) { if (intValues[i] == intValue) { diff --git a/core/src/test/java/com/alibaba/fastjson2/issues_2600/Issue2682.java b/core/src/test/java/com/alibaba/fastjson2/issues_2600/Issue2682.java new file mode 100644 index 0000000000..20138b98ed --- /dev/null +++ b/core/src/test/java/com/alibaba/fastjson2/issues_2600/Issue2682.java @@ -0,0 +1,50 @@ +package com.alibaba.fastjson2.issues_2600; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.baomidou.mybatisplus.annotation.IEnum; +import lombok.Data; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class Issue2682 { + @Test + public void test() { + String str = "{\"bizType\":\"common\"}"; + VM vm = JSON.parseObject(str, VM.class); + assertEquals(BizType.COMMON, vm.getBizType()); + } + + @Data + public static class VM { + private BizType bizType; + } + + public enum BizType + implements IEnum { + COMMON("common", "通用"); + + BizType(String value, String name) { + this.value = value; + this.name = name; + } + + @EnumValue + private final String value; + private final String name; + + @JSONField(value = true) + public String getValue() { + return value; + } + + public String getName() { + return name; + } + + public static void test123() { + } + } +}