@JsonDeserialize和@JsonSerialize注解的使用方式
JsonDeserialize注解介绍
@JsonDeserialize:
- json反序列化注解,作用于setter()方法,将json数据反序列化为java对象。
- 可以理解为用在处理接收的数据上。
使用场景
- 前端传递的参数与后端实际接收的参数不一致时,可以通过反序列化注解处理。
- (比如将前端传递的主键集合转换成用逗号分隔的字符串)
使用示例
假如前端页面中选择多条数据,会向后端传递选中的数据对象集合,但是后端期望存储选中的多个数据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、后端接收参数的dto如下图所示,其中临时党支部人员Id接收的是String类型,增加了该反序列化注解。

3、前端传递参数如下图所示:

4、后端实际接收到的参数如图所示:

@JsonSerialize注解
@JsonSerialize:
- json序列化注解,作用于getter()方法,将java对象序列化为json数据。
- 可以理解为用在处理返回的数据上
使用场景
后端返回前端的参数与前端期望的参数不一致时,可以用个序列化注解处理。(比如数据脱敏、数据格式处理等)
使用示例
假如后端存储附件、图片或者其他文件时,只存了文件key,此时前端反显需要将数据放在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、此时返回前端的数据格式为

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
解决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的用法与区别
这篇文章主要介绍了java中throws与throw及Throwable的用法和区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-04-04


最新评论