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