From 4d492bcee93f8992604a0b7d0c7db39a478612f5 Mon Sep 17 00:00:00 2001 From: wenshao Date: Wed, 1 Jan 2025 20:20:48 +0800 Subject: [PATCH] JSONObject#to support Void.class, for issue #2879 --- .../java/com/alibaba/fastjson2/JSONObject.java | 4 ++++ .../alibaba/fastjson2/issues_2800/Issue2879.java | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 core/src/test/java/com/alibaba/fastjson2/issues_2800/Issue2879.java diff --git a/core/src/main/java/com/alibaba/fastjson2/JSONObject.java b/core/src/main/java/com/alibaba/fastjson2/JSONObject.java index c0740475f7..54bb228ed0 100644 --- a/core/src/main/java/com/alibaba/fastjson2/JSONObject.java +++ b/core/src/main/java/com/alibaba/fastjson2/JSONObject.java @@ -1149,6 +1149,10 @@ public T to(Class clazz, JSONReader.Feature... features) { return (T) this; } + if (clazz == Void.class || clazz == void.class) { + return null; + } + ObjectReaderProvider provider = JSONFactory.getDefaultObjectReaderProvider(); ObjectReader objectReader = provider.getObjectReader(clazz, fieldBased); return objectReader.createInstance(this, featuresValue); diff --git a/core/src/test/java/com/alibaba/fastjson2/issues_2800/Issue2879.java b/core/src/test/java/com/alibaba/fastjson2/issues_2800/Issue2879.java new file mode 100644 index 0000000000..3c76bb27a0 --- /dev/null +++ b/core/src/test/java/com/alibaba/fastjson2/issues_2800/Issue2879.java @@ -0,0 +1,16 @@ +package com.alibaba.fastjson2.issues_2800; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertNull; + +public class Issue2879 { + @Test + public void test() { + JSONObject object = JSON.parseObject("{}"); + assertNull(object.to(Void.class)); + assertNull(object.to(void.class)); + } +}