Javascript 长整数
2022-08-31 16:23:53
我在javascript中看到了最奇怪的事情之一。服务器端(弹簧):
@RequestMapping(value = "/foo", method = RequestMethod.GET)
@ResponseBody
public Long foo() {
return 793548328091516928L;
}
我返回一个长整型值,然后:
$.get('/foo').done(function(data){
console.log(data);
});
它将长整数表示为“793548328091516900”,将最后两位数字替换为0(实际上是舍入)。当我从任何浏览器的地址栏发出GET请求时,正确表示的数字;因此,在我看来,这是一个js问题。
从服务器返回字符串而不是 long,并使用以下方式处理它:
var x = new Number(data).toFixed();
显然是一个解决方案。但是我不太幸运,我必须处理一个复杂的POJO(转换为JSON),其一些字段(有些是嵌套的)是用类型键入的。如果我尝试将此POJO强制转换为另一个没有类型为Long的字段的对象,这显然是繁琐的。java.lang.Long
有没有以更明确的方式解决这一障碍?