java-数据字典转换
Dict 字典注解类
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Dict {/*** 转换的类型* content : 统计内容转换*/String type() default "";/*** 1 : {"code":"code","name":"name"} 默认* 2 : {"code":"name"}*/int trans() default 1;}
BaseEnum 字典格式类
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class BaseEnum {private Object code;private String name;
}
DictJsonSerializer 字典转换实现类
import java.io.IOException;
import java.lang.reflect.Field;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Configuration;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializerProvider;
import lombok.extern.slf4j.Slf4j;@Slf4j
@Configuration
public class DictJsonSerializer extends JsonSerializer<Object> {@Overridepublic void serialize(Object dictVal, JsonGenerator generator, SerializerProvider provider) throws IOException {ObjectMapper objectMapper = new ObjectMapper();StringBuffer dictValName = new StringBuffer("");String currentName = generator.getOutputContext().getCurrentName();// 定义转换类型int trans = 1;try {// 获取字段Field field = generator.getCurrentValue().getClass().getDeclaredField(currentName); // 获取字典属性Dict dict = field.getDeclaredAnnotation(Dict.class);if(dict == null) {objectMapper.writeValue(generator, dictVal);return;}// 获取字典typeString type = dict.type();trans = dict.trans();if(type == null || StringUtils.isEmpty(type)) {if(trans == 2) {objectMapper.writeValue(generator, dictValName.toString());}else {objectMapper.writeValue(generator, BaseEnum.builder().code(dictVal).name(dictValName.toString()).build());}return;}// 通过字典key转换成获取字典valueString val = dictVal == null ? "" : dictVal.toString();if(!StringUtils.isEmpty(val)) {// 判断字典类型, 依据类型获取对应的valueif("content".equals(type)) {dictValName = new StringBuffer(ContentCompare.getContentName(val));} else {// 支持key1,key2方式String[] codes = val.split(",");int size = codes.length;for (int i = 0; i < size; i++) {Object valName = ParamCompareV1.param_compare_dict.get(codes[i]);dictValName.append(valName == null ? "" : valName.toString());if(i != size - 1) {dictValName.append(",");}}}}if(trans == 2) {objectMapper.writeValue(generator, dictValName);} else {objectMapper.writeValue(generator, BaseEnum.builder().code(dictVal).name(dictValName.toString()).build());}} catch (NoSuchFieldException e) {log.error(e.getMessage());if(trans == 2) {objectMapper.writeValue(generator, dictValName);}else {objectMapper.writeValue(generator, BaseEnum.builder().code(dictVal).name(dictValName.toString()).build());}}}
}
使用 BizRuleDto
import java.io.Serializable;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;/*** 衍生规则表*/
@SuppressWarnings("serial")
@Builder
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class BizRuleDto implements Serializable{/*** 自增id*/private Integer id;/*** 唯一标识guid*/private String guid;/*** 规则名称(中文) : 依据条件生成*/private String ruleName;/*** 规则名称(英文) : 依据条件生成*/private String ruleCode;/*** 类别*/private String category;/*** 产品*/private String product;/*** 统计内容*/@JsonSerialize(using = DictJsonSerializer.class)@Dict(type = "content")private String content;/*** 时间维度*/
// @JsonSerialize(using = DictJsonSerializer.class)
// @Dict(type = "time")private String time;/*** 统计方式*/
// @JsonSerialize(using = DictJsonSerializer.class)
// @Dict(type = "style")private String style;/*** 参数1、2、3、4*/
// @JsonSerialize(using = DictJsonSerializer.class)
// @Dict(type = "param1")private String param1;
// @JsonSerialize(using = DictJsonSerializer.class)
// @Dict(type = "param2")private String param2;
// @JsonSerialize(using = DictJsonSerializer.class)
// @Dict(type = "param3")private String param3;
// @JsonSerialize(using = DictJsonSerializer.class)
// @Dict(type = "param4")private String param4;/*** 状态*/private Integer state;/*** 应生成变量个数*/private Integer paramSizeShould;/*** 实际生成变量个数*/private Integer paramSizeReal;/*** 创建时间*/private String createTime;private Integer edition;}
如若不执行DictJsonSerializer, 则配置 :
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;@Configuration
public class JsonSerializeConfig extends WebMvcConfigurationSupport {@Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable();}}
java-数据字典转换相关推荐
- java 数据字典 spring_springboot+redis+切面实现数据字典功能
自定义注解:DataDict,用于bo对象类,需要翻译的属性 package com.zddts.common.annotation.dict; import java.lang.annotation ...
- 【引用】在Eclipse中将java Project转换成Dynamic Web Project
编辑工程的.project文件: 添加 <nature>org.eclipse.wst.common.project.facet.core.nature</nature> &l ...
- java时间转换 YYYY yyyy
java时间转换,特定时间转换'YYYY',时间加一天 本帖只展示转换效果,原因不详,等待有猿人破解 效果图: 演示代码: import java.text.ParseException; impor ...
- 【Java代码】坐标系说明+WGS84\GCJ02\BD09坐标系转换工具+Java坐标系转换及验证源代码分享(粘贴可用)
1. 坐标系说明 开发地图应用服务时,一定会接触到各种坐标系,而保证坐标系的正确与合理是一切数据分析的前提,总的来说,坐标系可以分为两大类:地理坐标系GCS(Geographic Coordinate ...
- java批量转换图片格式
废话不多直接上代码,代码其实也不多.... package com.qiao.testImage;import java.awt.image.BufferedImage; import java.io ...
- Java对象转换成JSON对象/JSON对象转换成JSON字符串/JSON字符串转换成JS对象
文章目录 后端部分 前端部分 后端部分 Option op = new Option("海淀","hd");//java对象转换json对象 JSONObjec ...
- java 大小写转换函数_不使用Java中的任何库函数将大写转换为小写
java 大小写转换函数 Given a string and we have to convert it from uppercase to lowercase. 给定一个字符串,我们必须将其从大写 ...
- Java DOC 转换给 PDF 格式文档的代码
工作过程,把写代码过程经常用的代码片段备份一次,下面的代码段是关于Java DOC 转换给 PDF 格式文档的代码,应该对码农们有所用. import java.io.File; import jav ...
- 将已有项目转为se项目_如何将 Java 项目转换成 Maven 项目
本文内容 Java 项目 Maven 项目 Java 项目转换成 Maven 项目 本文主要介绍如何将 Java 项目转换成 Maven 项目.首先要明确的是,用 Maven 管理 Java 项目的确 ...
- jsp java乱码转换_JSP中文乱码问题《转》
之前总是碰到JSP页面乱码的问题,每次都是现在网上搜,然后胡乱改,改完也不明白原因. 这次正好作下总结,中文乱码就是因为编码不符,可能出现乱码有四个地方: 1 JSP编码乱码 2 HTML编码乱码 3 ...
最新文章
- python 存redis失败无提示_Python Redis日志错误
- 不可错过!普渡大学最新《机器学习》课程
- c++用二叉树表示代数表达式_C语言:数据结构-二叉树的定义和基本术语和二叉树的性质...
- 自定义FireFox浏览器滚动条
- 【资源】首发:徐亦达老师的机器学习课件及下载(中文目录)
- 一起认识FileShare
- 拥抱智能,AI视频编码技术的新探索
- IAR 下C中嵌入汇编
- 数据结构 - 多路搜索树(2-3树、b树、b+树、b*树)
- 创新, FMA SMA 世界第一台VCD机的故事
- vue中$nextTick()作用
- 华为大数据中心山西_任正非:华为愿与山西一道建立“煤矿人工智能创新实验室”...
- 计算机考试题库电子版,全国计算机等级考试一级试题库大全完整版附参考答案...
- 文件i/o函数 open/close
- php与plc,plc编程语言有哪几种
- 爬虫豆瓣top250代码
- MyBase 与 HTML Help Workshop 编辑chm
- windows7 专业版安装中文语言包
- Python超详细基础入门教程
- SVN忽略项目中的文件或者文件夹