java 自定义字典序列化器

该文章介绍了如何创建自定义注解`@DictItem`来在对象序列化时加载指定字典类型,根据属性值获取对应字典项信息。`DictItemSerialize`类处理序列化过程,通过SpringCache和远程服务获取字典数据,支持多级字典查询。

一、字典序列化器

实现自定义字典序列化注解,在对象进行序列化时,加载指定字典类型,并根据属性值匹配对应的字典项,返回对应字典项信息。使用如下:

class Person {
   
   

	/**
	 * 性别
	 */
	@DictItem(type = "sex")
	private String sex;
}
import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 字典解析注解
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@JacksonAnnotationsInside
@JsonSerialize(using = DictItemSerialize.class)
public @interface DictItem {
   
   

	/**
	 * 字典type
	 */
	String type();

	/**
	 * 字段后缀
	 */
	String suffix() default "Label";

//	/**
//	 * 颜色字段后缀
//	 */
//	String colorSuffix() default "Color";
}

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.magic.admin.api.entity.SysDictItem;
import com.magic.admin.api.feign.RemoteDictService;
import com.magic.common.core.constant.CacheConstants;
import com.magic.common.core.constant.SecurityConstants;
import com.magic.common.core.util.R;
import com.magic.common.core.util.SpringContextHolder;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.BeanProperty;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;

import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Whitemeen太白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值