json请求参数枚举转换处理问题处理

door
LI-CCONG\李聪聪 7 months ago
parent 46ed58a65b
commit f1b823659a

@ -4,6 +4,7 @@ import cc.yunxi.common.domain.convert.EnumDeserializer;
import cc.yunxi.common.domain.convert.EnumSerializer; import cc.yunxi.common.domain.convert.EnumSerializer;
import cc.yunxi.common.domain.convert.LocalDateTimeDeserializer; import cc.yunxi.common.domain.convert.LocalDateTimeDeserializer;
import cc.yunxi.common.domain.convert.LocalDateTimeSerializer; import cc.yunxi.common.domain.convert.LocalDateTimeSerializer;
import cc.yunxi.common.enums.BaseEnum;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -35,8 +36,8 @@ public class JsonConfig {
jacksonObjectMapperBuilder.serializerByType(LocalDateTime.class, LocalDateTimeSerializer.INSTANCE); jacksonObjectMapperBuilder.serializerByType(LocalDateTime.class, LocalDateTimeSerializer.INSTANCE);
jacksonObjectMapperBuilder.deserializerByType(LocalDateTime.class, LocalDateTimeDeserializer.INSTANCE); jacksonObjectMapperBuilder.deserializerByType(LocalDateTime.class, LocalDateTimeDeserializer.INSTANCE);
// String <-> Enum // String <-> Enum
jacksonObjectMapperBuilder.serializerByType(Enum.class, EnumSerializer.INSTANCE); jacksonObjectMapperBuilder.serializerByType(BaseEnum.class, EnumSerializer.INSTANCE);
jacksonObjectMapperBuilder.deserializerByType(Enum.class, EnumDeserializer.INSTANCE); jacksonObjectMapperBuilder.deserializerByType(BaseEnum.class, EnumDeserializer.INSTANCE);
}; };
} }
} }

@ -25,15 +25,6 @@ public class EnumSerializer extends JsonSerializer<BaseEnum> {
@Override @Override
public void serialize(BaseEnum baseEnum, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { public void serialize(BaseEnum baseEnum, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeStartObject(); jsonGenerator.writeStartObject();
// java 如何获取枚举类的成员属性? 此处有问题, todo
// Field[] fields = baseEnum.getClass().getFields();
// for (Field field : fields) {
// try {
// jsonGenerator.writeStringField(field.getName(), String.valueOf(field.get(baseEnum)));
// } catch (IllegalAccessException e) {
// throw new RuntimeException(e);
// }
// }
jsonGenerator.writeStringField("code", baseEnum.getCode()); jsonGenerator.writeStringField("code", baseEnum.getCode());
jsonGenerator.writeStringField("desc", baseEnum.getDesc()); jsonGenerator.writeStringField("desc", baseEnum.getDesc());
jsonGenerator.writeEndObject(); jsonGenerator.writeEndObject();

Loading…
Cancel
Save