diff --git a/storage/src/main/java/com/zfoo/storage/interpreter/ResourceInterpreter.java b/storage/src/main/java/com/zfoo/storage/interpreter/ResourceInterpreter.java index 44768bc3..6059a6ea 100644 --- a/storage/src/main/java/com/zfoo/storage/interpreter/ResourceInterpreter.java +++ b/storage/src/main/java/com/zfoo/storage/interpreter/ResourceInterpreter.java @@ -81,9 +81,7 @@ public class ResourceInterpreter { for (var fieldInfo : fieldInfos) { var content = columns.get(fieldInfo.index); - if (StringUtils.isNotEmpty(content) || fieldInfo.field.getType() == String.class) { - inject(instance, fieldInfo.field, content); - } + inject(instance, fieldInfo.field, content); } result.add(instance); } diff --git a/storage/src/main/java/com/zfoo/storage/strategy/ListConverter.java b/storage/src/main/java/com/zfoo/storage/strategy/ListConverter.java index 1d57f80d..e9d231a7 100644 --- a/storage/src/main/java/com/zfoo/storage/strategy/ListConverter.java +++ b/storage/src/main/java/com/zfoo/storage/strategy/ListConverter.java @@ -56,9 +56,7 @@ public class ListConverter implements ConditionalGenericConverter { clazz = (Class) type; } if (content.startsWith("[") || content.endsWith("]")) { - return clazz.equals(List.class) - ? Collections.unmodifiableList(JsonUtils.string2List(content, clazz)) - : JsonUtils.string2List(content, clazz); + return Collections.unmodifiableList(JsonUtils.string2List(content, clazz)); } return ConvertUtils.convertToList(content, clazz); } diff --git a/storage/src/main/java/com/zfoo/storage/strategy/SetConverter.java b/storage/src/main/java/com/zfoo/storage/strategy/SetConverter.java index 38da5597..0d2a71dc 100644 --- a/storage/src/main/java/com/zfoo/storage/strategy/SetConverter.java +++ b/storage/src/main/java/com/zfoo/storage/strategy/SetConverter.java @@ -55,9 +55,7 @@ public class SetConverter implements ConditionalGenericConverter { clazz = (Class) type; } if (content.startsWith("[") || content.endsWith("]")) { - return clazz.equals(Set.class) - ? Collections.unmodifiableSet(JsonUtils.string2Set(content, clazz)) - : JsonUtils.string2Set(content, clazz); + return Collections.unmodifiableSet(JsonUtils.string2Set(content, clazz)); } return ConvertUtils.convertToSet(content, clazz); } diff --git a/storage/src/main/java/com/zfoo/storage/util/ConvertUtils.java b/storage/src/main/java/com/zfoo/storage/util/ConvertUtils.java index 82dd9f05..8770b702 100644 --- a/storage/src/main/java/com/zfoo/storage/util/ConvertUtils.java +++ b/storage/src/main/java/com/zfoo/storage/util/ConvertUtils.java @@ -34,6 +34,7 @@ public abstract class ConvertUtils { var converters = new HashSet<>(); converters.add(new ArrayConverter()); converters.add(new ListConverter()); + converters.add(new SetConverter()); converters.add(new JsonToMapConverter()); converters.add(new JsonToObjectConverter()); converters.add(new StringToClassConverter()); @@ -60,12 +61,10 @@ public abstract class ConvertUtils { return Array.newInstance(componentType, 0); } // 用普通的逗号分隔符解析 - var splits = content.split(StringUtils.COMMA_REGEX); - var length = splits.length; - Object array = Array.newInstance(componentType, length); - for (var i = 0; i < length; i++) { - Object value = ConvertUtils.convert(StringUtils.trim(splits[i]), componentType); - Array.set(array, i, value); + var list = convertToList(content, componentType); + Object array = Array.newInstance(componentType, list.size()); + for (var i = 0; i < list.size(); i++) { + Array.set(array, i, list.get(i)); } return array; } @@ -90,13 +89,6 @@ public abstract class ConvertUtils { if (StringUtils.isEmpty(content)) { return Collections.emptySet(); } - var splits = content.split(StringUtils.COMMA_REGEX); - var length = splits.length; - var set = new HashSet(); - for (var i = 0; i < length; i++) { - var value = ConvertUtils.convert(StringUtils.trim(splits[i]), type); - set.add(value); - } - return Collections.unmodifiableSet(set); + return Set.copyOf(convertToList(content, type)); } } diff --git a/storage/src/test/java/com/zfoo/storage/resource/StudentResource.java b/storage/src/test/java/com/zfoo/storage/resource/StudentResource.java index 379793ab..5f613ca8 100644 --- a/storage/src/test/java/com/zfoo/storage/resource/StudentResource.java +++ b/storage/src/test/java/com/zfoo/storage/resource/StudentResource.java @@ -19,6 +19,7 @@ import com.zfoo.storage.anno.Index; import com.zfoo.storage.anno.Storage; import java.util.List; +import java.util.Set; /** * @author godotg @@ -39,6 +40,9 @@ public class StudentResource { private int age; private float score; private String[] courses; + private int[] intArray; + private List intList; + private Set intSet; private User[] users; private List userList; private User user; @@ -67,6 +71,18 @@ public class StudentResource { return courses; } + public int[] getIntArray() { + return intArray; + } + + public List getIntList() { + return intList; + } + + public Set getIntSet() { + return intSet; + } + public User[] getUsers() { return users; } diff --git a/storage/src/test/resources/excel/StudentResource.xlsx b/storage/src/test/resources/excel/StudentResource.xlsx index 8ac64b66..88dda96a 100644 Binary files a/storage/src/test/resources/excel/StudentResource.xlsx and b/storage/src/test/resources/excel/StudentResource.xlsx differ