From 80b6cbfc9c861469146318d0b3dd5f8b8b525b8a Mon Sep 17 00:00:00 2001
From: xiejun <xiejun@vci-tech.com>
Date: 星期五, 01 十一月 2024 15:11:19 +0800
Subject: [PATCH] Revert "集成获取mdm分发通用数据格式接口集成"

---
 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