当前位置: 首页> 教育> 高考 > 昆明网站建设团队_常德政务网站_小程序开发哪家好_微信引流推广怎么做

昆明网站建设团队_常德政务网站_小程序开发哪家好_微信引流推广怎么做

时间:2025/7/13 7:35:36来源:https://blog.csdn.net/qq_43750656/article/details/144425408 浏览次数:0次
昆明网站建设团队_常德政务网站_小程序开发哪家好_微信引流推广怎么做

SpringBoot自动配置默认使用Jaskson来进行Json序列化转换,这里需要自定义Long类型和枚举类型的序列化规则

  • 定义枚举接口,可以获取枚举类的code和显示名称
public interface BaseEnum {Integer getCode();String getName();
}
public enum UserGender implements BaseEnum{MALE(1,"男"),FEMALE(2,"女"),OTHER(3,"其他");@Getterprivate Integer code;@Getterprivate String name;private UserGender(Integer code, String name){this.code = code;this.name = name;}public static UserGender getInstanceByCode(Integer code) {return Arrays.stream(values()).filter(item -> item.getCode().equals(code)).findFirst().orElse(null);}}
public enum UserStatus implements BaseEnum{NORMAL(1,"正常"),LOCKED(2,"锁定");@Getterprivate Integer code;@Getterprivate String name;private UserStatus(Integer code,String name){this.code = code;this.name = name;}public static UserStatus getInstanceByCode(Integer code) {return Arrays.stream(values()).filter(item -> item.getCode().equals(code)).findFirst().orElse(null);}
}
  • 配置Jaskson序列化以及反序列化规则
@Configuration
public class ObjectMapperSerializeConfig implements Jackson2ObjectMapperBuilderCustomizer {@Overridepublic void customize(Jackson2ObjectMapperBuilder builder) {builder.serializerByType(Long.class, new JsonSerializer<Long>() {@Overridepublic void serialize(Long value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {jsonGenerator.writeString(value.toString());}});builder.serializerByType(BaseEnum.class, new JsonSerializer<BaseEnum>() {@Overridepublic void serialize(BaseEnum enumData, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {jsonGenerator.writeString(enumData.getCode().toString());}});//针对于枚举类的反序列化转换处理,如果不处理,前端传递枚举code时,框架默认按照枚举定义的顺序来封装builder.deserializerByType(UserStatus.class, new JsonDeserializer<UserStatus>() {@Overridepublic UserStatus deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {int intValue = jsonParser.getIntValue();return UserStatus.getInstanceByCode(intValue);}});builder.deserializerByType(UserGender.class, new JsonDeserializer<UserGender>() {@Overridepublic UserGender deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {int intValue = jsonParser.getIntValue();return UserGender.getInstanceByCode(intValue);}});}
}
  • 定义实体类
@Data
@ApiModel("用户")
public class User {@ApiModelProperty("用户Id,新增时不传")private Long id;@ApiModelProperty("用户名称")private String name;@EnumType@ApiModelProperty("用户状态")private UserStatus userStatus;@EnumType@ApiModelProperty("用户性别")private UserGender userGender;}

后续在实体类使用枚举,在序列化Json以及反序列化Json时均可以根据配置的自定义规则来转换。

关键字:昆明网站建设团队_常德政务网站_小程序开发哪家好_微信引流推广怎么做

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: