@JsonDeserialize和@JsonSerialize注解的使用方式
JsonDeserialize注解介紹
@JsonDeserialize:
- json反序列化注解,作用于setter()方法,將json數(shù)據(jù)反序列化為java對象。
- 可以理解為用在處理接收的數(shù)據(jù)上。
使用場景
- 前端傳遞的參數(shù)與后端實際接收的參數(shù)不一致時,可以通過反序列化注解處理。
- (比如將前端傳遞的主鍵集合轉換成用逗號分隔的字符串)
使用示例
假如前端頁面中選擇多條數(shù)據(jù),會向后端傳遞選中的數(shù)據(jù)對象集合,但是后端期望存儲選中的多個數(shù)據(jù)id用逗號分隔,此時可以用反序列注解。
1、自定義反序列化的方式
public class CheckedStringDeserializer extends JsonDeserializer<String> {
@Override
public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
final List<Map<String, String>> list = p.getCodec().readValue(p, new TypeReference<List<Map<String, String>>>() {
});
if (CollUtil.isNotEmpty(list)) {
final ArrayList<String> objects = new ArrayList<>(list.size());
list.forEach(e -> objects.add(e.get("id")));
return CollUtil.join(objects, ",");
}
return "";
}
}2、后端接收參數(shù)的dto如下圖所示,其中臨時黨支部人員Id接收的是String類型,增加了該反序列化注解。

3、前端傳遞參數(shù)如下圖所示:

4、后端實際接收到的參數(shù)如圖所示:

@JsonSerialize注解
@JsonSerialize:
- json序列化注解,作用于getter()方法,將java對象序列化為json數(shù)據(jù)。
- 可以理解為用在處理返回的數(shù)據(jù)上
使用場景
后端返回前端的參數(shù)與前端期望的參數(shù)不一致時,可以用個序列化注解處理。(比如數(shù)據(jù)脫敏、數(shù)據(jù)格式處理等)
使用示例
假如后端存儲附件、圖片或者其他文件時,只存了文件key,此時前端反顯需要將數(shù)據(jù)放在list中回顯。
1、自定義序列化處理方式
public class FileUploadSeserializer extends JsonSerializer<String> {
@Override
public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
//將string轉為List<Map<String,String>>格式
Map<String,String> map = new HashMap<>(2);
List<Map<String,String>> list = new ArrayList<>(1);
map.put("key", value);
map.put("name",value);
list.add(map);
gen.writeObject(list);
}
}2、返回前端的vo對象如下圖所示,其中其中模板背景期望為附件的Key和name對象集合,在該字段上增加了文件上傳序列化注解。

3、此時返回前端的數(shù)據(jù)格式為

總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java中數(shù)組轉換為列表的兩種實現(xiàn)方式(超簡單)
本文介紹了在Java中將數(shù)組轉換為列表的兩種常見方法使用Arrays.asList和Java8的Stream API,Arrays.asList方法簡單易用,但返回的列表是固定大小的;而使用Stream API可以實現(xiàn)更靈活的操作,如過濾和映射,根據(jù)具體需求選擇合適的方法,感興趣的朋友一起看看吧2025-03-03
解決java.lang.Error: Unresolved compilation pro
這篇文章主要介紹了解決java.lang.Error: Unresolved compilation problems:問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
IDEA中將SpringBoot項目提交到git倉庫的方法步驟
本文主要介紹了IDEA中將SpringBoot項目提交到git倉庫的方法步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12
WebClient拋UnsupportedMediaTypeException異常解決
這篇文章主要為大家介紹了WebClient拋UnsupportedMediaTypeException異常的解決方案,文中給大家介紹了六中方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-02-02
詳細介紹Java關鍵字throw?throws?Throwable的用法與區(qū)別
這篇文章主要介紹了java中throws與throw及Throwable的用法和區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-04-04

