欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

@JsonSerialize(using = LongToStringUtil.class)注解的使用方式

 更新時(shí)間:2024年08月23日 09:05:52   作者:太白神龍  
這篇文章主要介紹了@JsonSerialize(using = LongToStringUtil.class)注解的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@JsonSerialize(using = LongToStringUtil.class)注解

一般我們?cè)诙xprivate Long id;時(shí),會(huì)添加上@JsonSerialize(using = LongToStringUtil.class)這樣類似的注解,接下來(lái)我們來(lái)看一下這個(gè)注解是什么意思?有什么作用?

使用注解

如下所示:

@JsonSerialize(using = LongToStringUtil.class)
private Long id;

@JsonSerialize在com.fasterxml.jackson.databind.annotation路徑下,是fastjson包下的接口。

我們實(shí)體類中定義的Long類型的數(shù)據(jù)在和前端交互時(shí)

會(huì)比number數(shù)值更大,會(huì)導(dǎo)致精度缺失,使用JsonSerialize注解,可以幫助我們解決該問(wèn)題。

在using = LongToStringUtil.class

可以使用我們自定義的類,來(lái)將我們傳入的值轉(zhuǎn)換為String類型,來(lái)傳入到前端,可以解決精度問(wèn)題

定義的LongToStringUtil類需要繼承自JsonSerializer<Long>類

代碼如下所示:

//在實(shí)體類的long類型屬性上加上注解:@JsonSerialize(using =LongToStringSerializer.class)
//Long類型數(shù)據(jù)(eg:id)傳到前臺(tái)會(huì)超出JS精確整形范圍,因此轉(zhuǎn)化為String傳到前臺(tái)
public class LongToStringUtil extends JsonSerializer<Long> {
 
	@Override
	public void serialize(Long value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
		if(null!=value) {
			gen.writeString(String.valueOf(value));
		}
	}
 
}

@JsonSerialize(using = ToStringSerializer.class)用法及注意事項(xiàng)

該注解的作用

把指定的類型轉(zhuǎn)化String類型返給前端

為什么使用該注解

如果Long值超過(guò)前端js顯示的長(zhǎng)度范圍時(shí)會(huì)導(dǎo)致前端回顯錯(cuò)誤

此時(shí)我們想到的解決方案是將Long值返回給前端時(shí)轉(zhuǎn)為String,

但是我們又不想變更字段的類型,當(dāng)然我們也不想額外添加新的字段。

這個(gè)時(shí)候我們可以用@JsonSerialize,在Json序列化的時(shí)候把Long自動(dòng)轉(zhuǎn)為String

示例

/**
* 主鍵
*/
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;

@TableId
@JsonSerialize(using = ToStringSerializer.class)
private Long id;

注意:

一定要在返回的實(shí)體類的字段上加上該注解

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論