From e7f63f59e5dab666ec9dc7e68b7ef08c8a86fbe2 Mon Sep 17 00:00:00 2001 From: "shaojin.wensj" Date: Sat, 27 Aug 2022 00:52:30 +0800 Subject: [PATCH] serialize support Boolean isXX getter, fix issue #673 --- .../com/alibaba/fastjson2/util/BeanUtils.java | 2 +- .../alibaba/fastjson2/issues/Issue673.java | 27 +++++++++++++++++++ .../v1issues/issue_1400/Issue1496.java | 2 +- .../fastjson/issue_1400/Issue1496.java | 2 +- 4 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 core/src/test/java/com/alibaba/fastjson2/issues/Issue673.java diff --git a/core/src/main/java/com/alibaba/fastjson2/util/BeanUtils.java b/core/src/main/java/com/alibaba/fastjson2/util/BeanUtils.java index c9f8e3ce45..f4967d0d13 100644 --- a/core/src/main/java/com/alibaba/fastjson2/util/BeanUtils.java +++ b/core/src/main/java/com/alibaba/fastjson2/util/BeanUtils.java @@ -690,7 +690,7 @@ boolean record = isRecord(objectClass); if (firstChar >= 'a' && firstChar <= 'z' && methodNameLength == 4) { nameMatch = false; } - } else if (returnClass == boolean.class) { + } else if (returnClass == boolean.class || returnClass == Boolean.class) { nameMatch = methodNameLength > 2 && methodName.startsWith("is"); if (nameMatch) { char firstChar = methodName.charAt(2); diff --git a/core/src/test/java/com/alibaba/fastjson2/issues/Issue673.java b/core/src/test/java/com/alibaba/fastjson2/issues/Issue673.java new file mode 100644 index 0000000000..3c02cef6fa --- /dev/null +++ b/core/src/test/java/com/alibaba/fastjson2/issues/Issue673.java @@ -0,0 +1,27 @@ +package com.alibaba.fastjson2.issues; + +import com.alibaba.fastjson2.JSON; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class Issue673 { + @Test + public void test() throws Exception { + Bean bean = new Bean(); + bean.value = true; + assertEquals("{\"value\":true}", JSON.toJSONString(bean)); + } + + public static class Bean { + private Boolean value; + + public Boolean isValue() { + return value; + } + + public void setValue(Boolean value) { + this.value = value; + } + } +} diff --git a/core/src/test/java/com/alibaba/fastjson2/v1issues/issue_1400/Issue1496.java b/core/src/test/java/com/alibaba/fastjson2/v1issues/issue_1400/Issue1496.java index d6b77bc88c..13cef2ba39 100644 --- a/core/src/test/java/com/alibaba/fastjson2/v1issues/issue_1400/Issue1496.java +++ b/core/src/test/java/com/alibaba/fastjson2/v1issues/issue_1400/Issue1496.java @@ -13,7 +13,7 @@ public class Issue1496 { @Test public void test_for_issue() throws Exception { String json = JSON.toJSONString(SetupStatus.FINAL_TRAIL); - assertEquals("{\"canRefuse\":true,\"code\":3,\"name\":\"FINAL_TRAIL\",\"nameCn\":\"公益委员会/理事会/理事长审核\"}", json); + assertEquals("{\"canRefuse\":true,\"code\":3,\"first\":false,\"last\":false,\"name\":\"FINAL_TRAIL\",\"nameCn\":\"公益委员会/理事会/理事长审核\"}", json); } public interface ISetupStatusInfo { diff --git a/fastjson1-compatible/src/test/java/com/alibaba/fastjson/issue_1400/Issue1496.java b/fastjson1-compatible/src/test/java/com/alibaba/fastjson/issue_1400/Issue1496.java index 15693a0437..1ee6832ab5 100644 --- a/fastjson1-compatible/src/test/java/com/alibaba/fastjson/issue_1400/Issue1496.java +++ b/fastjson1-compatible/src/test/java/com/alibaba/fastjson/issue_1400/Issue1496.java @@ -13,7 +13,7 @@ public class Issue1496 { @Test public void test_for_issue() throws Exception { String json = JSON.toJSONString(SetupStatus.FINAL_TRAIL); - assertEquals("{\"canRefuse\":true,\"code\":3,\"name\":\"FINAL_TRAIL\",\"nameCn\":\"公益委员会/理事会/理事长审核\"}", json); + assertEquals("{\"canRefuse\":true,\"code\":3,\"first\":false,\"last\":false,\"name\":\"FINAL_TRAIL\",\"nameCn\":\"公益委员会/理事会/理事长审核\"}", json); } public interface ISetupStatusInfo {