diff --git a/fastjson1-compatible/src/main/java/com/alibaba/fastjson/JSON.java b/fastjson1-compatible/src/main/java/com/alibaba/fastjson/JSON.java index aadafba506..9315b63584 100644 --- a/fastjson1-compatible/src/main/java/com/alibaba/fastjson/JSON.java +++ b/fastjson1-compatible/src/main/java/com/alibaba/fastjson/JSON.java @@ -2038,7 +2038,9 @@ public static List parseArray(String text, Class type) { text, createReadContext(JSONFactory.getDefaultObjectReaderProvider(), DEFAULT_PARSER_FEATURE)) ) { - return reader.read(paramType); + List list = reader.read(paramType); + reader.handleResolveTasks(list); + return list; } catch (com.alibaba.fastjson2.JSONException e) { Throwable cause = e.getCause(); if (cause == null) { @@ -2063,7 +2065,9 @@ public static List parseArray(String text, Class clazz, ParserConfig c text, createReadContext(config.getProvider(), DEFAULT_PARSER_FEATURE)) ) { - return reader.read(paramType); + List list = reader.read(paramType); + reader.handleResolveTasks(list); + return list; } catch (com.alibaba.fastjson2.JSONException e) { Throwable cause = e.getCause(); if (cause == null) { @@ -2083,7 +2087,9 @@ public static List parseArray(String text, Class type, Feature... feat text, createReadContext(JSONFactory.getDefaultObjectReaderProvider(), DEFAULT_PARSER_FEATURE, features)) ) { - return reader.read(paramType); + List list = reader.read(paramType); + reader.handleResolveTasks(list); + return list; } catch (com.alibaba.fastjson2.JSONException e) { Throwable cause = e.getCause(); if (cause == null) { diff --git a/fastjson1-compatible/src/test/java/com/alibaba/fastjson2/issue_2300/Issue2348.java b/fastjson1-compatible/src/test/java/com/alibaba/fastjson2/issue_2300/Issue2348.java new file mode 100644 index 0000000000..8991bcb334 --- /dev/null +++ b/fastjson1-compatible/src/test/java/com/alibaba/fastjson2/issue_2300/Issue2348.java @@ -0,0 +1,26 @@ +package com.alibaba.fastjson2.issue_2300; + +import com.alibaba.fastjson.JSONArray; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * @author 张治保 + * @since 2024/3/29 + */ +public class Issue2348 { + @Test + void test() { + ArrayList items = new ArrayList<>(); + HashMap item = new HashMap<>(); + item.put("data", "data"); + items.add(item); + items.add(item); + List newItems = JSONArray.parseArray(JSONArray.toJSONString(items), HashMap.class); + Assertions.assertEquals(items, newItems); + } +}