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