fix convert

This commit is contained in:
Looly 2024-09-21 20:54:03 +08:00
parent f456cd5d2a
commit f770e00904
2 changed files with 32 additions and 26 deletions

View File

@ -683,6 +683,10 @@ public class BeanUtil {
if (null == clazz) { if (null == clazz) {
return false; return false;
} }
if(clazz == String.class){
// String中有getter方法但为字符串不是Bean
return false;
}
return hasGetter(clazz) || hasPublicField(clazz); return hasGetter(clazz) || hasPublicField(clazz);
} }

View File

@ -26,6 +26,8 @@ import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertEquals;
/** /**
* 类型转换工具单元测试<br> * 类型转换工具单元测试<br>
* 转换为数组 * 转换为数组
@ -44,9 +46,9 @@ public class ConvertToBeanTest {
person.setSubName("sub名字"); person.setSubName("sub名字");
final Map<?, ?> map = ConvertUtil.convert(Map.class, person); final Map<?, ?> map = ConvertUtil.convert(Map.class, person);
Assertions.assertEquals(map.get("name"), "测试A11"); assertEquals(map.get("name"), "测试A11");
Assertions.assertEquals(map.get("age"), 14); assertEquals(map.get("age"), 14);
Assertions.assertEquals("11213232", map.get("openid")); assertEquals("11213232", map.get("openid"));
} }
@Test @Test
@ -58,15 +60,15 @@ public class ConvertToBeanTest {
person.setSubName("sub名字"); person.setSubName("sub名字");
final Map<String, String> map = ConvertUtil.toMap(String.class, String.class, person); final Map<String, String> map = ConvertUtil.toMap(String.class, String.class, person);
Assertions.assertEquals("测试A11", map.get("name")); assertEquals("测试A11", map.get("name"));
Assertions.assertEquals("14", map.get("age")); assertEquals("14", map.get("age"));
Assertions.assertEquals("11213232", map.get("openid")); assertEquals("11213232", map.get("openid"));
final LinkedHashMap<String, String> map2 = ConvertUtil.convert( final LinkedHashMap<String, String> map2 = ConvertUtil.convert(
new TypeReference<LinkedHashMap<String, String>>() {}, person); new TypeReference<LinkedHashMap<String, String>>() {}, person);
Assertions.assertEquals("测试A11", map2.get("name")); assertEquals("测试A11", map2.get("name"));
Assertions.assertEquals("14", map2.get("age")); assertEquals("14", map2.get("age"));
Assertions.assertEquals("11213232", map2.get("openid")); assertEquals("11213232", map2.get("openid"));
} }
@Test @Test
@ -79,10 +81,10 @@ public class ConvertToBeanTest {
final Map<String, String> map2 = ConvertUtil.toMap(String.class, String.class, map1); final Map<String, String> map2 = ConvertUtil.toMap(String.class, String.class, map1);
Assertions.assertEquals("1", map2.get("key1")); assertEquals("1", map2.get("key1"));
Assertions.assertEquals("2", map2.get("key2")); assertEquals("2", map2.get("key2"));
Assertions.assertEquals("3", map2.get("key3")); assertEquals("3", map2.get("key3"));
Assertions.assertEquals("4", map2.get("key4")); assertEquals("4", map2.get("key4"));
} }
@Test @Test
@ -95,11 +97,11 @@ public class ConvertToBeanTest {
map.put("subName", "sub名字"); map.put("subName", "sub名字");
final SubPerson subPerson = ConvertUtil.convert(SubPerson.class, map); final SubPerson subPerson = ConvertUtil.convert(SubPerson.class, map);
Assertions.assertEquals("88dc4b28-91b1-4a1a-bab5-444b795c7ecd", subPerson.getId().toString()); assertEquals("88dc4b28-91b1-4a1a-bab5-444b795c7ecd", subPerson.getId().toString());
Assertions.assertEquals(14, subPerson.getAge()); assertEquals(14, subPerson.getAge());
Assertions.assertEquals("11213232", subPerson.getOpenid()); assertEquals("11213232", subPerson.getOpenid());
Assertions.assertEquals("测试A11", subPerson.getName()); assertEquals("测试A11", subPerson.getName());
Assertions.assertEquals("11213232", subPerson.getOpenid()); assertEquals("11213232", subPerson.getOpenid());
} }
@Test @Test
@ -116,10 +118,10 @@ public class ConvertToBeanTest {
caseInsensitiveMap.put("Jerry", 2); caseInsensitiveMap.put("Jerry", 2);
caseInsensitiveMap.put("tom", 3); caseInsensitiveMap.put("tom", 3);
Map<String, String> map = ConvertUtil.toMap(String.class, String.class, caseInsensitiveMap); final Map<String, String> map = ConvertUtil.toMap(String.class, String.class, caseInsensitiveMap);
Assertions.assertEquals("2", map.get("jerry")); assertEquals("2", map.get("jerry"));
Assertions.assertEquals("2", map.get("Jerry")); assertEquals("2", map.get("Jerry"));
Assertions.assertEquals("3", map.get("tom")); assertEquals("3", map.get("tom"));
} }
@Test @Test
public void beanToSpecifyMapTest() { public void beanToSpecifyMapTest() {
@ -129,9 +131,9 @@ public class ConvertToBeanTest {
person.setName("测试A11"); person.setName("测试A11");
person.setSubName("sub名字"); person.setSubName("sub名字");
Map<String, String> map = ConvertUtil.toMap(LinkedHashMap.class, String.class, String.class, person); final Map<String, String> map = ConvertUtil.toMap(LinkedHashMap.class, String.class, String.class, person);
Assertions.assertEquals("测试A11", map.get("name")); assertEquals("测试A11", map.get("name"));
Assertions.assertEquals("14", map.get("age")); assertEquals("14", map.get("age"));
Assertions.assertEquals("11213232", map.get("openid")); assertEquals("11213232", map.get("openid"));
} }
} }