diff --git a/core/src/main/java/com/alibaba/fastjson2/JSONReader.java b/core/src/main/java/com/alibaba/fastjson2/JSONReader.java index ea03cccd8..74a93abb7 100644 --- a/core/src/main/java/com/alibaba/fastjson2/JSONReader.java +++ b/core/src/main/java/com/alibaba/fastjson2/JSONReader.java @@ -2244,8 +2244,7 @@ public void read(Map object, long features) { continue; } - if (i == 0 - && (contextFeatures & Feature.SupportAutoType.mask) != 0 + if ((contextFeatures & Feature.SupportAutoType.mask) != 0 && name.equals("@type") && object.getClass().getName().equals(value) ) { diff --git a/core/src/test/java/com/alibaba/fastjson2/issues_3200/Issue3284.java b/core/src/test/java/com/alibaba/fastjson2/issues_3200/Issue3284.java new file mode 100644 index 000000000..2f135da93 --- /dev/null +++ b/core/src/test/java/com/alibaba/fastjson2/issues_3200/Issue3284.java @@ -0,0 +1,18 @@ +package com.alibaba.fastjson2.issues_3200; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONReader; +import org.junit.jupiter.api.Test; + +import java.util.HashMap; + +import static org.junit.jupiter.api.Assertions.assertFalse; + +public class Issue3284 { + @Test + public void test() { + String str = "{\"endDataTime\":\"2024\",\"@type\":\"java.util.HashMap\",\"startDataTime\":\"2023\"}"; + HashMap hashMap = JSON.parseObject(str, HashMap.class, JSONReader.Feature.SupportAutoType); + assertFalse(hashMap.containsKey("@type")); + } +}