From dff3dfec6833c3ff4185575ad4ad18a46a0a1314 Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 12 Oct 2022 14:42:43 +0800 Subject: [PATCH] fix bug --- .../hutool/core/bean/copier/MapToMapCopier.java | 4 ++++ .../java/cn/hutool/core/bean/BeanUtilTest.java | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/hutool-core/src/main/java/cn/hutool/core/bean/copier/MapToMapCopier.java b/hutool-core/src/main/java/cn/hutool/core/bean/copier/MapToMapCopier.java index f0457a0e0..5fb51a00b 100755 --- a/hutool-core/src/main/java/cn/hutool/core/bean/copier/MapToMapCopier.java +++ b/hutool-core/src/main/java/cn/hutool/core/bean/copier/MapToMapCopier.java @@ -50,6 +50,10 @@ public class MapToMapCopier extends AbsCopier { return; } sValue = entry.getValue(); + // 忽略空值 + if (copyOptions.ignoreNullValue && sValue == null) { + return; + } final Object targetValue = target.get(sKey); // 非覆盖模式下,如果目标值存在,则跳过 diff --git a/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java index 3d13df13b..941989921 100755 --- a/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java @@ -575,6 +575,21 @@ public class BeanUtilTest { Assert.assertNull(BeanUtil.copyProperties(null, Food.class)); } + @Test + public void copyPropertiesMapToMapIgnoreNullTest() { + // 测试MapToMap + final Map p1 = new HashMap<>(); + p1.put("isSlow", true); + p1.put("name", "测试"); + p1.put("subName", null); + + final Map map = MapUtil.newHashMap(); + BeanUtil.copyProperties(p1, map, CopyOptions.of().setIgnoreNullValue(true)); + Assert.assertTrue((Boolean) map.get("isSlow")); + Assert.assertEquals("测试", map.get("name")); + Assert.assertFalse(map.containsKey("subName")); + } + @Test public void copyBeanPropertiesFilterTest() { final Food info = new Food();