id為Long型別的後端處理方案

2021-10-11 02:38:12 字數 1622 閱讀 4619

痛點:js的long型別最大17位數,超過17位的數字,為將多出來的位數變成零

(

"/queryuser"

)public

list

<

user

>

queryuser()

開啟瀏覽器,請求介面,結果如下!

我們這裡選擇第二種方法

我們可以使用jackson工具包來實現物件序列化。springboot預設自帶是jackson,解析速率足夠了。

/**

* webmvc配置

*/@configuration

@slf4j

@enablewebmvc

public

class

webconfig

implements

webmvcconfigurer

}

其中最關鍵一行**,是註冊了這個轉換類,從而實現將所有的 long 變成 string。

// 序列換成json時,將所有的long變成string

******module ******module =

new******module()

;******module.

addserializer

(long

.class

,tostringserializer

.instance)

;******module.

addserializer

(long

.type,

tostringserializer

.instance)

;registermodule

(******module)

;

如果想對某個日期進行格式化,可以全域性設定。

//全域性統一日期格式

setdateformat

(new

******dateformat

("yyyy-mm-dd hh:mm:ss"))

;

也可以,單獨對某個屬性進行設定,例如對createtime屬性格式化為yyyy-mm-dd,只需要加上如下註解即可。

@jsonformat

(pattern=

"yyyy-mm-dd"

, timezone=

"gmt+8"

)private

date createtime;

工具轉化類寫好之後,就非常簡單了,只需要對 aop 攔截的方法返回的引數,進行序列化就可以自動實現將所有的 long 變成 string。

加上配置類後,重新測試,效果如圖:

前端處理後端傳回的 Long 型別資料精度丟失

直接拋問題,如下圖所示 檢視 network 時,響應回來的 long 型別資料和在控制台列印的資料出現的精度丟失的問題。經查閱資料,原來 js 內建有 32 位整數,而 number 型別的安全整數是 53 位。如果超過 53 位,則精度會丟失。正如現在後台傳來乙個 64 位的 long 型別整數...

ORACLE中對LONG型別進行處理的方法

1.在block中處理 不過pl sql 只能處理不超過32k的資料,超過這個限制,就無法通過pl sql來處理。sql set serverout on sql begin 2 for i in select from t long loop 3 if instr i.long col,world...

後端傳的long資料型別,前端js解析後精度失準

前言 昨晚上和後端對介面,乙個返回的json陣列裡面,有兩條資料一直對不上號。他在postman裡面測是乙個資料,到了我這邊拿到資料以後console.log,那個引數的資料值就變了。一直到不到原因 但是在前端response裡面可以看到,後端傳的資料是正確的,在preview裡面卻不正確 2.原因...