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) {
return false;
}
if(clazz == String.class){
// String中有getter方法但为字符串不是Bean
return false;
}
return hasGetter(clazz) || hasPublicField(clazz);
}

View File

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