From 2724e34dc9e63c1a66c075805cdc19faeba8111c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Wed, 5 Mar 2025 09:34:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9EListSerializer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jackson/convert/annotation/Listable.java | 22 ++++++++ .../jackson/convert/serde/ListSerializer.java | 52 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100755 sop-admin/sop-admin-backend/admin-common/src/main/java/com/gitee/sop/admin/common/jackson/convert/annotation/Listable.java create mode 100755 sop-admin/sop-admin-backend/admin-common/src/main/java/com/gitee/sop/admin/common/jackson/convert/serde/ListSerializer.java 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