我在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的问题,在我看来。
从服务器返回一个字符串而不是长度,并处理它:
var x = new Number(data).toFixed();
显然是一个解决方案。但我不是很幸运,我必须处理一个复杂的POJO(转换为JSON),其中一些字段(一些是嵌套的)使用java.lang.Long类型键入。如果我尝试将这个POJO转换为另一个对象,没有输入字段Long,这显然很麻烦。
是否有更清楚的方法解决这个障碍?