泰国丸美 2025-01-06 17:26 采纳率: 0%
浏览 7
已结题

bigint数据处理问题

各位程序员们,我在开发时候遇到了后端返回的值是19位的long类型的,但是前端number只有16位的精确长度,我用了json-bigint处理了接受到的数据,但是我想以同样的数据返回给后端我该怎么办,(就是使用number类型的,不转化为string),我尝试使用了bigint类型的数据直接传给后端,但是显示bigint类型的数据不支持序列化,有什么好的办法处理吗

  • 写回答

2条回答 默认 最新

  • 码农阿豪@新空间 优质创作者: Java、后端开发技术领域 2025-01-06 17:27
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    根据您的描述,您遇到了一个后端返回的19位long类型数据与前端16位number类型数据不匹配的问题。您已经使用了json-bigint库来处理接收到的数据,但是想以同样的数据返回给后端,但又遇到了bigint类型数据不支持序列化的问题。下面我将提供一种解决方案:
    1. 在前端将bigint类型数据转换为普通的number类型数据:由于JavaScript中number类型只能表示16位精确长度的整数,所以您需要将bigint数据转换为number数据。您可以使用valueOf()方法将bigint类型数据转换为原始值,然后再传递给后端。
    const bigintData = BigInt('1234567890123456789');
    const numberData = Number(bigintData.valueOf());
    // 然后将numberData传递给后端
    
    1. 在后端接收number类型数据并处理:后端可能会将前端发送的数据解析为long类型,但是您可以在后端对接收到的16位number类型数据进行处理。例如,在Java中可以使用int类型接收16位以上的整数,并进行后续处理。
    // 假设后端使用Spring接收前端发送的数据
    @RequestMapping(value = "/api/data", method = RequestMethod.POST)
    public void processData(@RequestBody int numberData) {
        // 在这里处理16位number类型数据
    }
    

    通过以上方法,您可以在前端将bigint类型数据转换为number类型数据,并在后端接收并处理number类型数据,以解决数据类型不匹配的问题。希望这个解决方案对您有帮助!

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月7日
  • 创建了问题 1月6日