From a2fc42bfdf4a9b80e35054526e60ca7bca0b715a Mon Sep 17 00:00:00 2001 From: zhaowenyuan Date: Mon, 17 Jun 2024 11:13:20 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E5=AD=97=E5=85=B8=E6=B3=A8=E8=A7=A3?= =?UTF-8?q?=E6=9B=B4=E6=96=B0,=20=E5=8F=AF=E9=80=89=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E9=87=8D=E5=86=99=E5=88=B0=E5=8E=9F=E5=85=88=E7=9A=84column=20?= =?UTF-8?q?=E4=B8=8A=E4=B8=BA=E5=AD=97=E5=85=B8=E5=AF=B9=E5=BA=94=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/dict/annotation/DictFormat.java | 5 +++++ .../common/dict/jackson/DictJsonSerializer.java | 14 +++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/chushang-common/chushang-common-dict/src/main/java/com/chushang/common/dict/annotation/DictFormat.java b/chushang-common/chushang-common-dict/src/main/java/com/chushang/common/dict/annotation/DictFormat.java index 5da631a..037f7a6 100644 --- a/chushang-common/chushang-common-dict/src/main/java/com/chushang/common/dict/annotation/DictFormat.java +++ b/chushang-common/chushang-common-dict/src/main/java/com/chushang/common/dict/annotation/DictFormat.java @@ -19,4 +19,9 @@ public @interface DictFormat { * 设置字典的type值 (如: sys_user_sex) */ String dictType() default ""; + + /** + * 是否重写覆盖本身key + */ + boolean rewrite() default false; } diff --git a/chushang-common/chushang-common-dict/src/main/java/com/chushang/common/dict/jackson/DictJsonSerializer.java b/chushang-common/chushang-common-dict/src/main/java/com/chushang/common/dict/jackson/DictJsonSerializer.java index ae508f3..55742d7 100644 --- a/chushang-common/chushang-common-dict/src/main/java/com/chushang/common/dict/jackson/DictJsonSerializer.java +++ b/chushang-common/chushang-common-dict/src/main/java/com/chushang/common/dict/jackson/DictJsonSerializer.java @@ -21,12 +21,14 @@ import java.util.Objects; public class DictJsonSerializer extends JsonSerializer implements ContextualSerializer { private String dictType; + private boolean rewrite; @Override public JsonSerializer createContextual(SerializerProvider prov, BeanProperty property) throws JsonMappingException { DictFormat anno = property.getAnnotation(DictFormat.class); if (Objects.nonNull(anno) && StrUtil.isNotBlank(anno.dictType())) { this.dictType = anno.dictType(); + this.rewrite = anno.rewrite(); return this; } return prov.findValueSerializer(property.getType(), property); @@ -34,10 +36,16 @@ public class DictJsonSerializer extends JsonSerializer implements Contex @Override public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException { try { - gen.writeObject(value); - gen.writeFieldName(gen.getOutputContext().getCurrentName() + "Name"); String dictLabel = DictUtils.getDictLabel(dictType, Convert.toStr(value)); - gen.writeString(dictLabel); + if (rewrite) { + // 重写了 原先的 code + gen.writeString(dictLabel); + }else { + // value == code + gen.writeObject(value); + gen.writeFieldName(gen.getOutputContext().getCurrentName() + "Name"); + gen.writeString(dictLabel); + } } catch (BeansException e) { log.error("字典数据未查到, 采用默认处理【{}】", e.getMessage()); gen.writeObject(value);