From 336e80982f458af8427645f111e4e9aa316ee87f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E9=93=81?= Date: Sun, 14 Jul 2024 07:24:39 +0800 Subject: [PATCH] fix boolean field annotation not work, for issue #2795 --- .../com/alibaba/fastjson2/util/BeanUtils.java | 2 ++ .../fastjson2/issues_2700/Issue2795.java | 25 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 core/src/test/java/com/alibaba/fastjson2/issues_2700/Issue2795.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 6f7c857423..c2444e0170 100644 --- a/core/src/main/java/com/alibaba/fastjson2/util/BeanUtils.java +++ b/core/src/main/java/com/alibaba/fastjson2/util/BeanUtils.java @@ -1339,6 +1339,8 @@ public static Field getField(Class objectClass, Method method) { } else if (fieldName.regionMatches(0, methodName, prefix, fieldNameLength)) { fields[1] = field; } + } else if (boolean.class == field.getType() && methodName.equals(fieldName)) { + fields[0] = field; } }); } diff --git a/core/src/test/java/com/alibaba/fastjson2/issues_2700/Issue2795.java b/core/src/test/java/com/alibaba/fastjson2/issues_2700/Issue2795.java new file mode 100644 index 0000000000..56b93f90e2 --- /dev/null +++ b/core/src/test/java/com/alibaba/fastjson2/issues_2700/Issue2795.java @@ -0,0 +1,25 @@ +package com.alibaba.fastjson2.issues_2700; + +import com.alibaba.fastjson.annotation.JSONField; +import com.alibaba.fastjson2.JSONObject; +import lombok.Builder; +import lombok.Data; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class Issue2795 { + @Builder + @Data + public static class Student { + @JSONField(name = "is_judge") + private boolean isJudge; + } + + @Test + public void testFastJson() { + Student student = Student.builder().isJudge(true).build(); + System.out.println(com.alibaba.fastjson.JSON.toJSONString(student)); + assertEquals("{\"is_judge\":true}", JSONObject.toJSONString(student)); + } +}