From 487267a9f0fddc635fe706549dbd4203d591e6ac Mon Sep 17 00:00:00 2001 From: "shaojin.wensj" Date: Thu, 18 Aug 2022 18:59:03 +0800 Subject: [PATCH] bug fix for toJavaList, for issue #699 --- .../java/com/alibaba/fastjson2/JSONArray.java | 3 +-- .../com/alibaba/fastjson2/issues/Issue699.java | 18 ++++++++++++++++++ .../java/com/alibaba/fastjson/JSONArray.java | 4 ++-- .../fastjson/issues_compatible/Issue699.java | 18 ++++++++++++++++++ 4 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 core/src/test/java/com/alibaba/fastjson2/issues/Issue699.java create mode 100644 fastjson1-compatible/src/test/java/com/alibaba/fastjson/issues_compatible/Issue699.java diff --git a/core/src/main/java/com/alibaba/fastjson2/JSONArray.java b/core/src/main/java/com/alibaba/fastjson2/JSONArray.java index bb73403546..a0404b48ec 100644 --- a/core/src/main/java/com/alibaba/fastjson2/JSONArray.java +++ b/core/src/main/java/com/alibaba/fastjson2/JSONArray.java @@ -1083,9 +1083,8 @@ public T[] toArray(Class itemClass, JSONReader.Feature... features) { * * @param clazz specify the {@code Class} to be converted * @param features features to be enabled in parsing - * @deprecated since 2.0.4, please use {@link #toList(Class, JSONReader.Feature...)} + * please use {@link #toList(Class, JSONReader.Feature...)} */ - @Deprecated public List toJavaList(Class clazz, JSONReader.Feature... features) { return toList(clazz, features); } diff --git a/core/src/test/java/com/alibaba/fastjson2/issues/Issue699.java b/core/src/test/java/com/alibaba/fastjson2/issues/Issue699.java new file mode 100644 index 0000000000..0f3b8a6ca6 --- /dev/null +++ b/core/src/test/java/com/alibaba/fastjson2/issues/Issue699.java @@ -0,0 +1,18 @@ +package com.alibaba.fastjson2.issues; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class Issue699 { + @Test + public void test() { + JSONArray array = JSON.parseArray("[\"a\",\"b\",\"c\"]"); + List list = array.toJavaList(String.class); + assertEquals(array.get(0), list.get(0)); + } +} diff --git a/fastjson1-compatible/src/main/java/com/alibaba/fastjson/JSONArray.java b/fastjson1-compatible/src/main/java/com/alibaba/fastjson/JSONArray.java index d1703a3347..fb099c7f09 100644 --- a/fastjson1-compatible/src/main/java/com/alibaba/fastjson/JSONArray.java +++ b/fastjson1-compatible/src/main/java/com/alibaba/fastjson/JSONArray.java @@ -801,8 +801,8 @@ public List toJavaList(Class clazz) { if (item instanceof Map) { classItem = (T) objectReader.createInstance((Map) item, 0L); } else { - if (item == null) { - list.add(null); + if (item == null || item.getClass() == clazz) { + list.add((T) item); continue; } diff --git a/fastjson1-compatible/src/test/java/com/alibaba/fastjson/issues_compatible/Issue699.java b/fastjson1-compatible/src/test/java/com/alibaba/fastjson/issues_compatible/Issue699.java new file mode 100644 index 0000000000..c7a2e0848e --- /dev/null +++ b/fastjson1-compatible/src/test/java/com/alibaba/fastjson/issues_compatible/Issue699.java @@ -0,0 +1,18 @@ +package com.alibaba.fastjson.issues_compatible; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class Issue699 { + @Test + public void test() { + JSONArray array = JSON.parseArray("[\"a\",\"b\",\"c\"]"); + List list = array.toJavaList(String.class); + assertEquals(array.get(0), list.get(0)); + } +}