jquery通过ajax获取json中的long型时值会被截断?

kingdelee 发布于 2014/02/14 13:18
阅读 7K+
收藏 1

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}')

加载中
0
con
con
JS的整数是64位浮点数模拟的,53位尾数,整数超过 Math.pow(2,53)应该就没法保证精度了,大概是这个原因吧
kingdelee
kingdelee
原来如此,恍然大悟...看来必须的转换成字符串在去parse了
0
chaun
chaun

可以再定义一个字段strNid,值为strNid=String.valueOf(nid),前台就取strId就可以

0
chaun
chaun

jackson的话可以在nid属性上加上如下注解@JsonSerialize(using=ToStringSerializer.class)

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部