“Jackson JsonSerialize 注解解决前后端long类型覆盖范围不一致的问题”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) (建立内容为“1”的新页面) |
Jihongchang(讨论 | 贡献) |
||
| 第1行: | 第1行: | ||
| − | + | 前端 JS 里的 Number 类型 和 Java 里的 long 类型是不一致的。 | |
| + | |||
| + | 问题场景是: | ||
| + | |||
| + | 若依框架自动生成的前后端REST接口代码,后端对象的属性是 Long 类型,查完之后点击对应单条记录执行查看明细、编辑、删除操作都会有问题。 | ||
| + | |||
| + | 因为默认后端的 Long 放到 JSON 对象里到前端是 Number,但因为两者可以表示数值的范围不同,所以在数值大到超过一个值的时候,前端再传到后端的就不是和原先 Long 相等的值了,比如雪花ID,解决方案就是在对应属性上加注解:<syntaxhighlight lang="java"> | ||
| + | import com.fasterxml.jackson.databind.annotation.JsonSerialize; | ||
| + | import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; | ||
| + | |||
| + | public class Student { | ||
| + | |||
| + | @JsonSerialize(using = ToStringSerializer.class) | ||
| + | private Long id; | ||
| + | |||
| + | } | ||
| + | </syntaxhighlight> | ||
2026年1月26日 (一) 09:30的版本
前端 JS 里的 Number 类型 和 Java 里的 long 类型是不一致的。
问题场景是:
若依框架自动生成的前后端REST接口代码,后端对象的属性是 Long 类型,查完之后点击对应单条记录执行查看明细、编辑、删除操作都会有问题。
因为默认后端的 Long 放到 JSON 对象里到前端是 Number,但因为两者可以表示数值的范围不同,所以在数值大到超过一个值的时候,前端再传到后端的就不是和原先 Long 相等的值了,比如雪花ID,解决方案就是在对应属性上加注解:
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
public class Student {
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
}