diff --git a/sop-admin/sop-admin-backend/admin-common/src/main/java/com/gitee/sop/admin/common/jackson/convert/annotation/Listable.java b/sop-admin/sop-admin-backend/admin-common/src/main/java/com/gitee/sop/admin/common/jackson/convert/annotation/Listable.java new file mode 100755 index 00000000..7e747b76 --- /dev/null +++ b/sop-admin/sop-admin-backend/admin-common/src/main/java/com/gitee/sop/admin/common/jackson/convert/annotation/Listable.java @@ -0,0 +1,22 @@ +package com.gitee.sop.admin.common.jackson.convert.annotation; + + +import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.gitee.sop.admin.common.jackson.convert.serde.ListSerializer; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 序列化自动转成数组 + * @author 六如 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +@JacksonAnnotationsInside +@JsonSerialize(using = ListSerializer.class) +public @interface Listable { +} diff --git a/sop-admin/sop-admin-backend/admin-common/src/main/java/com/gitee/sop/admin/common/jackson/convert/serde/ListSerializer.java b/sop-admin/sop-admin-backend/admin-common/src/main/java/com/gitee/sop/admin/common/jackson/convert/serde/ListSerializer.java new file mode 100755 index 00000000..ca7ae539 --- /dev/null +++ b/sop-admin/sop-admin-backend/admin-common/src/main/java/com/gitee/sop/admin/common/jackson/convert/serde/ListSerializer.java @@ -0,0 +1,52 @@ +package com.gitee.sop.admin.common.jackson.convert.serde; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import lombok.extern.slf4j.Slf4j; + +import java.io.IOException; + +/** + *
+ * {@literal
+ * 将数字类型转换成布尔
+ *
+ * 支持:"["a", "b"]", "[1,2]", "1,2,3"
+ *
+ * @Listable
+ * private String appList; // 返回给前端: "appList": ["xx"]
+ *
+ * }
+ * 
+ * + * @author 六如 + */ +@Slf4j +public class ListSerializer extends JsonSerializer { + + + @Override + public void serialize(Object value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { + if (value == null) { + jsonGenerator.writeNull(); + return; + } + if (value instanceof String) { + String str = (String) value; + if (JSON.isValidArray(str)) { + String json = String.valueOf(value); + JSONArray array = JSON.parseArray(json); + jsonGenerator.writeObject(array); + } else { + String[] split = str.split(","); + jsonGenerator.writeObject(split); + } + } else { + jsonGenerator.writeObject(value); + } + } + +}