diff --git a/core/src/main/java/com/alibaba/fastjson2/JSONArray.java b/core/src/main/java/com/alibaba/fastjson2/JSONArray.java index cb379ce6d..c3300de5f 100644 --- a/core/src/main/java/com/alibaba/fastjson2/JSONArray.java +++ b/core/src/main/java/com/alibaba/fastjson2/JSONArray.java @@ -210,7 +210,7 @@ public JSONObject getJSONObject(int index) { return writerAdapter.toJSONObject(value); } - return null; + return (JSONObject) JSON.toJSON(value); } /** diff --git a/core/src/test/java/com/alibaba/fastjson2/issues_3400/Issue3419.java b/core/src/test/java/com/alibaba/fastjson2/issues_3400/Issue3419.java new file mode 100644 index 000000000..c600b5c89 --- /dev/null +++ b/core/src/test/java/com/alibaba/fastjson2/issues_3400/Issue3419.java @@ -0,0 +1,30 @@ +package com.alibaba.fastjson2.issues_3400; + +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import org.junit.jupiter.api.Test; + +import java.util.HashMap; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class Issue3419 { + @Test + public void test() { + Map map = new HashMap<>(); + map.put("str", new float[] {1.0f, 1.0f, 1.0f, 1.0f, 1.0f}); + + com.alibaba.fastjson.JSONObject jo1 = new com.alibaba.fastjson.JSONObject(); + com.alibaba.fastjson.JSONArray ja1 = new com.alibaba.fastjson.JSONArray(); + ja1.addAll(map.entrySet()); + jo1.put("content", ja1); + + JSONObject jo2 = new JSONObject(); + JSONArray ja2 = new JSONArray(); + ja2.addAll(map.entrySet()); + jo2.put("content", ja2); + + assertEquals(jo1.getJSONArray("content").getJSONObject(0), jo2.getJSONArray("content").getJSONObject(0)); + } +}