diff --git a/core/src/test/java/com/alibaba/fastjson2/issues/Issue661.java b/core/src/test/java/com/alibaba/fastjson2/issues/Issue661.java new file mode 100644 index 0000000000..78d996f661 --- /dev/null +++ b/core/src/test/java/com/alibaba/fastjson2/issues/Issue661.java @@ -0,0 +1,39 @@ +package com.alibaba.fastjson2.issues; + +import com.alibaba.fastjson2.JSON; +import lombok.Data; +import org.junit.jupiter.api.RepeatedTest; + +import java.util.Collections; + +public class Issue661 { + @Data + static class Response { + T data; + + Response(T data) { + this.data = data; + } + } + + @Data + static class A { + // 没有属性不会异常 + int a; + } + + @RepeatedTest(100) + void testB() { + for (int i = 0; i < 1000; i++) { + JSON.toJSONString(new Response<>(new A())); + } + } + + @RepeatedTest(100) + void testList() { + for (int i = 0; i < 1000; i++) { + // Collections.singletonList(0)改成0也会异常,异常概率小一些 + JSON.toJSONString(new Response<>(Collections.singletonList(0))); + } + } +} diff --git a/fastjson1-compatible/src/test/java/com/alibaba/fastjson/v2issues/Issue661.java b/fastjson1-compatible/src/test/java/com/alibaba/fastjson/v2issues/Issue661.java new file mode 100644 index 0000000000..4c23448d60 --- /dev/null +++ b/fastjson1-compatible/src/test/java/com/alibaba/fastjson/v2issues/Issue661.java @@ -0,0 +1,39 @@ +package com.alibaba.fastjson.v2issues; + +import com.alibaba.fastjson.JSON; +import lombok.Data; +import org.junit.jupiter.api.RepeatedTest; + +import java.util.Collections; + +public class Issue661 { + @Data + static class Response { + T data; + + Response(T data) { + this.data = data; + } + } + + @Data + static class A { + // 没有属性不会异常 + int a; + } + + @RepeatedTest(100) + void testB() { + for (int i = 0; i < 1000; i++) { + JSON.toJSONString(new Response<>(new A())); + } + } + + @RepeatedTest(100) + void testList() { + for (int i = 0; i < 1000; i++) { + // Collections.singletonList(0)改成0也会异常,异常概率小一些 + JSON.toJSONString(new Response<>(Collections.singletonList(0))); + } + } +}