最近在公司用NODEJS做一个第三方应用,请求对方接口反馈的为JSON格式的数据,如下:
{"content": "Hi", "created_at": 1340863646, "type": "text", "message_id": 5758965507965321234, "from_user": "userC"}
其中message_id是19位number类型的。我用JSON.parse解析成JSON对象获取其中的信息,方法如下:
var jsonStr = '{"content": "Hi", "created_at": 1340863646, "type": "text", "message_id": 5758965507965321234, "from_user": "userC"}';
var jsonObj = JSON.parse(jsonStr);
console.log(jsonObj.message_id);//得到结果是:5758965507965321000
得到的结果的最后三位变成000了,请问如何处理?超过16位的数据解析后均会变为000;
目前用了个暂时规避的方法是,拿到json的string字符串,先把19位message_id的值两边加双引号,写的也有问题,有么有JS高手帮忙看看哈。
目前写的临时规避方案如下,是有BUG的:
//将message_id的19位数字两边加上双引号,避免JSON.PARSE时候,JS会对超过16位的数字转换错误
//JS/v8引擎都有这个BUG,如何处理?
return JSON.parse(jsonStr.toString().replace(/:\s\d{19}/g, ":\"@!#@!#$&\"").replace(/:\d{19}/g, ":\"@!#@!#$&\"").replace(/@!#@!#:\s/g,"").replace(/@!#@!#:/g,""));