欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

@JsonSerialize(using=LongToStringUtil.class)注解的使用方式,

来源: javaer 分享于  点击 47763 次 点评:115

@JsonSerialize(using=LongToStringUtil.class)注解的使用方式,


目录
  • @JsonSerialize(using = LongToStringUtil.class)注解
    • 使用注解
    • 我们实体类中定义的Long类型的数据在和前端交互时
    • 在using = LongToStringUtil.class
  • @JsonSerialize(using = ToStringSerializer.class)用法及注意事项
    • 该注解的作用
    • 为什么使用该注解
    • 示例
  • 总结

    @JsonSerialize(using = LongToStringUtil.class)注解

    一般我们在定义private Long id;时,会添加上@JsonSerialize(using = LongToStringUtil.class)这样类似的注解,接下来我们来看一下这个注解是什么意思?有什么作用?

    使用注解

    如下所示:

    @JsonSerialize(using = LongToStringUtil.class)
    private Long id;

    @JsonSerialize在com.fasterxml.jackson.databind.annotation路径下,是fastjson包下的接口。

    我们实体类中定义的Long类型的数据在和前端交互时

    会比number数值更大,会导致精度缺失,使用JsonSerialize注解,可以帮助我们解决该问题。

    在using = LongToStringUtil.class

    可以使用我们自定义的类,来将我们传入的值转换为String类型,来传入到前端,可以解决精度问题

    定义的LongToStringUtil类需要继承自JsonSerializer<Long>类

    代码如下所示:

    //在实体类的long类型属性上加上注解:@JsonSerialize(using =LongToStringSerializer.class)
    //Long类型数据(eg:id)传到前台会超出JS精确整形范围,因此转化为String传到前台
    public class LongToStringUtil extends JsonSerializer<Long> {
     
    	@Override
    	public void serialize(Long value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
    		if(null!=value) {
    			gen.writeString(String.valueOf(value));
    		}
    	}
     
    }

    @JsonSerialize(using = ToStringSerializer.class)用法及注意事项

    该注解的作用

    把指定的类型转化String类型返给前端

    为什么使用该注解

    如果Long值超过前端js显示的长度范围时会导致前端回显错误

    此时我们想到的解决方案是将Long值返回给前端时转为String,

    但是我们又不想变更字段的类型,当然我们也不想额外添加新的字段。

    这个时候我们可以用@JsonSerialize,在Json序列化的时候把Long自动转为String

    示例

    /**
    * 主键
    */
    import com.fasterxml.jackson.databind.annotation.JsonSerialize;
    import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
    
    @TableId
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    注意:

    一定要在返回的实体类的字段上加上该注解

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持3672js教程。

    您可能感兴趣的文章:
    • SpringBoot @JsonDeserialize自定义Json序列化方式
    • SpringBoot返回long,前端接收进度丢失,@JsonSerialize不生效问题
    • @JsonSerialize序列化注解的使用
    • @JsonSerialize注解的使用示例教程
    • @JsonDeserialize和@JsonSerialize注解的使用方式
    相关栏目:

    用户点评