From 921e8bd6a63cc8cbc3ee5ac3c7a1243198064f36 Mon Sep 17 00:00:00 2001 From: godotg Date: Fri, 19 Jul 2024 22:07:45 +0800 Subject: [PATCH] perf[storage]: array or collection is null safe --- .../storage/convert/JsonToMapConverter.java | 4 ++++ .../convert/JsonToObjectConverter.java | 4 ++++ .../test/resources/excel/StudentResource.xlsx | Bin 9955 -> 9943 bytes 3 files changed, 8 insertions(+) diff --git a/storage/src/main/java/com/zfoo/storage/convert/JsonToMapConverter.java b/storage/src/main/java/com/zfoo/storage/convert/JsonToMapConverter.java index c209bd04..b0a41e69 100644 --- a/storage/src/main/java/com/zfoo/storage/convert/JsonToMapConverter.java +++ b/storage/src/main/java/com/zfoo/storage/convert/JsonToMapConverter.java @@ -14,6 +14,7 @@ package com.zfoo.storage.convert; import com.zfoo.protocol.util.JsonUtils; +import com.zfoo.protocol.util.StringUtils; import org.springframework.core.convert.TypeDescriptor; import org.springframework.core.convert.converter.ConditionalGenericConverter; @@ -38,6 +39,9 @@ public class JsonToMapConverter implements ConditionalGenericConverter { @Override public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) { String content = (String) source; + if (StringUtils.isBlank(content)) { + return Collections.emptyMap(); + } return JsonUtils.string2Map(content, targetType.getMapKeyTypeDescriptor().getType(), targetType.getMapValueTypeDescriptor().getType()); } } diff --git a/storage/src/main/java/com/zfoo/storage/convert/JsonToObjectConverter.java b/storage/src/main/java/com/zfoo/storage/convert/JsonToObjectConverter.java index ff696a1a..673f7a5a 100644 --- a/storage/src/main/java/com/zfoo/storage/convert/JsonToObjectConverter.java +++ b/storage/src/main/java/com/zfoo/storage/convert/JsonToObjectConverter.java @@ -15,6 +15,7 @@ package com.zfoo.storage.convert; import com.zfoo.protocol.util.JsonUtils; import com.zfoo.protocol.util.ReflectionUtils; +import com.zfoo.protocol.util.StringUtils; import org.springframework.core.convert.TypeDescriptor; import org.springframework.core.convert.converter.ConditionalGenericConverter; @@ -58,6 +59,9 @@ public class JsonToObjectConverter implements ConditionalGenericConverter { @Override public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) { String content = (String) source; + if (StringUtils.isBlank(content)) { + return null; + } return JsonUtils.string2Object(content, targetType.getType()); } } diff --git a/storage/src/test/resources/excel/StudentResource.xlsx b/storage/src/test/resources/excel/StudentResource.xlsx index 88dda96ad78d417a73e1c4de5e133902a8eb582b..ec1367e69a35ce00e17b26c48957ed4a247a6190 100644 GIT binary patch delta 2382 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