关于javascript:页面接受超18位的数字的解决办法

理论遇到的问题

let result = {
  "acookieId": null,
  "adjustFee": "0.00",
  "alipayId": null,
  "alipayNo": 2020120422001188551422599081,
  "alipayPoint": "0",
  "alipayUrl": "2020120422001188551422599081-url",
  "alipayWarnMsg": null,
  "allowAppkeys": null
}

下面是我工作中遇到的一段返回的json数据,因为alipayNo字段值超过18位数字,导致对这段数据进行JSON.stringify()时会把后续的数字在页面上显示会变成0。

我是按上面办法解决的

let matchArray = result.match(/"[a-zA-Z]*":d{18}d+/g)
// 因为这个数字在alipayUrl也会呈现并且是在字符串中,所以须要先将整个字段匹配进去
let matchArrayItem = matchArray.replace(/d{18}d+/g, '"$&"')
// 再对下面找到的字段值加上双引号,转换为字符串
result = result.replace(matchArray, matchArrayItem)
// 替换掉原先的值就好

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理