当前位置: 代码网 > it编程>编程语言>Java > @JsonSerialize(using = LongToStringUtil.class)注解的使用方式

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

2024年09月11日 Java 我要评论
@jsonserialize(using = longtostringutil.class)注解一般我们在定义private long id;时,会添加上@jsonserialize(using =

@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;

注意:

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com