From 9b4433fddf5b401edb0aace8a404ac733b122702 Mon Sep 17 00:00:00 2001
From: 田源 <tianyuan@vci-tech.com>
Date: 星期四, 03 四月 2025 14:35:02 +0800
Subject: [PATCH] 添加非密字段显示
---
Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/jackson/BladeBeanSerializerModifier.java | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 107 insertions(+), 0 deletions(-)
diff --git a/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/jackson/BladeBeanSerializerModifier.java b/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/jackson/BladeBeanSerializerModifier.java
new file mode 100644
index 0000000..cbc2f63
--- /dev/null
+++ b/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/jackson/BladeBeanSerializerModifier.java
@@ -0,0 +1,107 @@
+package org.springblade.core.tool.jackson;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
+import com.fasterxml.jackson.databind.ser.BeanSerializerModifier;
+import org.springblade.core.tool.utils.StringPool;
+import org.springblade.core.tool.utils.StringUtil;
+
+import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.time.temporal.TemporalAccessor;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * jackson 榛樿鍊间负 null 鏃剁殑澶勭悊
+ * <p>
+ * 涓昏鏄负浜嗛伩鍏� app 绔嚭鐜皀ull瀵艰嚧闂��
+ * <p>
+ * 瑙勫垯锛�
+ * number -1
+ * string ""
+ * date ""
+ * boolean false
+ * array []
+ * Object {}
+ *
+ * @author L.cm
+ */
+public class BladeBeanSerializerModifier extends BeanSerializerModifier {
+ @Override
+ public List<BeanPropertyWriter> changeProperties(
+ SerializationConfig config, BeanDescription beanDesc,
+ List<BeanPropertyWriter> beanProperties) {
+ // 寰幆鎵�鏈夌殑beanPropertyWriter
+ beanProperties.forEach(writer -> {
+ // 濡傛灉宸茬粡鏈� null 搴忓垪鍖栧鐞嗗娉ㄨВ锛欯JsonSerialize(nullsUsing = xxx) 璺宠繃
+ if (writer.hasNullSerializer()) {
+ return;
+ }
+ JavaType type = writer.getType();
+ Class<?> clazz = type.getRawClass();
+ if (type.isTypeOrSubTypeOf(Number.class)) {
+// writer.assignNullSerializer(NullJsonSerializers.NUMBER_JSON_SERIALIZER);
+ } else if (type.isTypeOrSubTypeOf(Boolean.class)) {
+ writer.assignNullSerializer(NullJsonSerializers.BOOLEAN_JSON_SERIALIZER);
+ } else if (type.isTypeOrSubTypeOf(Character.class)) {
+ writer.assignNullSerializer(NullJsonSerializers.STRING_JSON_SERIALIZER);
+ } else if (type.isTypeOrSubTypeOf(String.class)) {
+ writer.assignNullSerializer(NullJsonSerializers.STRING_JSON_SERIALIZER);
+ } else if (type.isArrayType() || clazz.isArray() || type.isTypeOrSubTypeOf(Collection.class)) {
+ writer.assignNullSerializer(NullJsonSerializers.ARRAY_JSON_SERIALIZER);
+ } else if (type.isTypeOrSubTypeOf(OffsetDateTime.class)) {
+ writer.assignNullSerializer(NullJsonSerializers.STRING_JSON_SERIALIZER);
+ } else if (type.isTypeOrSubTypeOf(Date.class) || type.isTypeOrSubTypeOf(TemporalAccessor.class)) {
+ writer.assignNullSerializer(NullJsonSerializers.STRING_JSON_SERIALIZER);
+ } else {
+ writer.assignNullSerializer(NullJsonSerializers.OBJECT_JSON_SERIALIZER);
+ }
+ });
+ return super.changeProperties(config, beanDesc, beanProperties);
+ }
+
+ public interface NullJsonSerializers {
+
+ JsonSerializer<Object> STRING_JSON_SERIALIZER = new JsonSerializer<Object>() {
+ @Override
+ public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
+ gen.writeString(StringPool.EMPTY);
+ }
+ };
+
+ JsonSerializer<Object> NUMBER_JSON_SERIALIZER = new JsonSerializer<Object>() {
+ @Override
+ public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
+ gen.writeNumber(StringUtil.INDEX_NOT_FOUND);
+ }
+ };
+
+ JsonSerializer<Object> BOOLEAN_JSON_SERIALIZER = new JsonSerializer<Object>() {
+ @Override
+ public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
+ gen.writeObject(Boolean.FALSE);
+ }
+ };
+
+ JsonSerializer<Object> ARRAY_JSON_SERIALIZER = new JsonSerializer<Object>() {
+ @Override
+ public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
+ gen.writeStartArray();
+ gen.writeEndArray();
+ }
+ };
+
+ JsonSerializer<Object> OBJECT_JSON_SERIALIZER = new JsonSerializer<Object>() {
+ @Override
+ public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
+ gen.writeStartObject();
+ gen.writeEndObject();
+ }
+ };
+
+ }
+
+}
--
Gitblit v1.9.3