jquery通过ajax获取json中的long型时值会被截断?
java代码,用的是fastjson:
@Get("getAjax") @Post("getAjax") public String getAjax() { NewsDone newsDone = new NewsDone(); long nid = 3509161061361442710L; newsDone.setNid(nid); return "@" + JSONObject.toJSONString(newsDone); }
js代码:
$("#t").on("click", function(){ $.ajax({ type: "GET", url: $("#ctxpath").val() + "/redissys/getAjax", dataType : "JSON", success:function(data){ alert(data.nid); } }); });
打印出来的nid是:3509161061361443000,而原来的nid:3509161061361442710
说明long型的值被截断了
怎么样通过上述ajax json的方式才能获取完整的long型呢
PS:在java代码中,把long改成string,可以获取完整的值,但是这改变了model的类型了,不太好。
PS2:经查询,仅与下面有关,下面会截断成3509161061361443000
JSON.parse('{"nid":3509161061361442710}')
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
jackson的话可以在nid属性上加上如下注解@JsonSerialize(using=ToStringSerializer.class)
可以再定义一个字段strNid,值为strNid=String.valueOf(nid),前台就取strId就可以
原来如此,恍然大悟...看来必须的转换成字符串在去parse了
JS的整数是64位浮点数模拟的,53位尾数,整数超过
Math.pow(2,53)应该就没法保证精度了,大概是这个原因吧