package com.qianwen.core.tool.jackson; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.BeanDescription; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializationConfig; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.BeanPropertyWriter; import com.fasterxml.jackson.databind.ser.BeanSerializerModifier; 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; import com.qianwen.core.tool.utils.StringPool; /* loaded from: blade-core-tool-9.3.0.0-SNAPSHOT.jar:org/springblade/core/tool/jackson/BladeBeanSerializerModifier.class */ public class BladeBeanSerializerModifier extends BeanSerializerModifier { /* loaded from: blade-core-tool-9.3.0.0-SNAPSHOT.jar:org/springblade/core/tool/jackson/BladeBeanSerializerModifier$NullJsonSerializers.class */ public interface NullJsonSerializers { public static final JsonSerializer STRING_JSON_SERIALIZER = new JsonSerializer() { // from class: org.springblade.core.tool.jackson.BladeBeanSerializerModifier.NullJsonSerializers.1 public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException { gen.writeString(StringPool.EMPTY); } }; public static final JsonSerializer NUMBER_JSON_SERIALIZER = new JsonSerializer() { // from class: org.springblade.core.tool.jackson.BladeBeanSerializerModifier.NullJsonSerializers.2 public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException { gen.writeNumber(-1); } }; public static final JsonSerializer BOOLEAN_JSON_SERIALIZER = new JsonSerializer() { // from class: org.springblade.core.tool.jackson.BladeBeanSerializerModifier.NullJsonSerializers.3 public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException { gen.writeObject(Boolean.FALSE); } }; public static final JsonSerializer ARRAY_JSON_SERIALIZER = new JsonSerializer() { // from class: org.springblade.core.tool.jackson.BladeBeanSerializerModifier.NullJsonSerializers.4 public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException { gen.writeStartArray(); gen.writeEndArray(); } }; public static final JsonSerializer OBJECT_JSON_SERIALIZER = new JsonSerializer() { // from class: org.springblade.core.tool.jackson.BladeBeanSerializerModifier.NullJsonSerializers.5 public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException { gen.writeStartObject(); gen.writeEndObject(); } }; } public List changeProperties(SerializationConfig config, BeanDescription beanDesc, List beanProperties) { beanProperties.forEach(writer -> { 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); } }