当前位置: 代码网 > it编程>编程语言>Java > @JsonDeserialize和@JsonSerialize注解的使用方式

@JsonDeserialize和@JsonSerialize注解的使用方式

2024年09月11日 Java 我要评论
jsondeserialize注解介绍@jsondeserialize:json反序列化注解,作用于setter()方法,将json数据反序列化为java对象。可以理解为用在处理接收的数据上。使用场景

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、此时返回前端的数据格式为

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com