我在JavaScript中见过一个最奇怪的东西。 服务器端(Spring):
@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类型字段的对象,就会很麻烦。
有没有更清晰的解决方法?