千家信息网

自定义枚举gson的转换

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容介绍了"自定义枚举gson的转换"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!CodedTy
千家信息网最后更新 2025年12月02日自定义枚举gson的转换

本篇内容介绍了"自定义枚举gson的转换"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!


CodedTypeTypeAdapter

import com.google.gson.*;import com.utils.mybatis.CodedEnum;import java.lang.reflect.Type;/** * CodedEnum在GSON中的转换规则,使用code,而不是字符 * * @param  * @author tenmao */public class CodedTypeTypeAdapter & CodedEnum> implements JsonSerializer, JsonDeserializer {    @Override    public E deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {        if (type instanceof Class) {            @SuppressWarnings("unchecked")            Class klass = (Class) type;            return CodedEnum.codeOf(klass, jsonElement.getAsInt()).orElse(null);        } else {            throw new RuntimeException(String.format("json %s cannot convert to type %s", jsonElement, type));        }    }    @Override    public JsonElement serialize(E e, Type type, JsonSerializationContext jsonSerializationContext) {        return new JsonPrimitive(e.getCode());    }}

HttpMessageConverter

import com.google.gson.GsonBuilder;import com.tenmao.utils.mybatis.CodedEnum;import com.tenmao.utils.mybatis.converter.CodedTypeTypeAdapter;import lombok.extern.slf4j.Slf4j;import org.reflections.Reflections;import org.reflections.scanners.SubTypesScanner;import org.springframework.http.converter.json.GsonHttpMessageConverter;import java.util.Set;/** * @author tenmao * @since 2017/12/1 */@Slf4jpublic class HttpMessageConverter extends GsonHttpMessageConverter {    public HttpMessageConverter() {        final GsonBuilder builder = new GsonBuilder();        final Reflections reflections = new Reflections("com.tenmao", new SubTypesScanner(true));        final Set allClasses = reflections.getStore().getSubTypesOf(CodedEnum.class.getName());        for (String klass : allClasses) {            try {                final Class aClass = Class.forName(klass);                builder.registerTypeAdapter(aClass, new CodedTypeTypeAdapter<>());            } catch (ClassNotFoundException e) {                log.error("fail to register for gson", e);            }        }        setGson(builder.create());    }}

spring-mvc.xml

                        

完成

实现上述步骤后,只要实现接口CodedEnum的自定义枚举都可以自动转换为其code

"自定义枚举gson的转换"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

内容 更多 知识 实用 学有所成 接下来 困境 字符 实际 情况 接口 文章 案例 步骤 编带 网站 行业 规则 过程 高质量 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中职生网络安全备课 不同数据库信息错误 客户信息表数据库代码 智能交通和软件开发相连吗 计算机网络技术专业找工作 农行广州软件开发中心社招面试 上海忒亚网络技术有限公司 软件开发属于一套吗 国庆假期网络安全教育征文 关于ai网络安全手抄报上的句子 文献检索数据库定义 原油期货期货软件开发 徐汇区智能化数据库销售厂家报价 侏罗纪岛为什么连接不到服务器 服务器字体下载 带20台电脑服务器 长沙直播软件开发代码 游戏公司的服务器不会停电吗 计算机服务器怎么共用打印机 数据融合 网络安全 观看青少年网络安全素养心得 网络安全计算机考试 网络安全自学需要多久 滨州轻工业软件开发服务 买阿里云服务器要怎么用 网络安全自纠自查清单 网络安全博士生 二十一世纪互联网科技 网络安全运维中级 360如何给内网服务器打补丁
0