1.需求说明
在工作中,有时需要把实体类中的属性和注释转换格式,返回给前端。根据类型的不同,动态的展示表头数据。
2.方法
2.1首先根据传参判断,得到需要转换的实体类。
public Map<String,String> getTableHeader(String metadataType){
Map<String, String> map = new HashMap<>();
switch (DicMapTypeEnums.getEnum(Integer.valueOf(metadataType))) {
case MYSQL:
map= getHeader(DataSourceResult.class);
break;
case TABLE:
map= getHeader(TableResult.class);
break;
}
return map;
}
@Data
public class DataSourceResult {
....
@JsonProperty("数量")
private int tableCount;
/**
* 热度
*/
@JsonProperty("热度")
private int hot;
/**
* 关注度
*/
@JsonProperty("关注度")
private int attention;
/**
* 更新时间
*/
@JsonProperty("更新时间")
private String updateTime;
}
2.2利用实体类上的@JsonProperty注解,去解析。
public Map<String,String> getHeader(Class<?> t){
List<String> reflect = FieldTransfer.reflect(t);
Map<String, String> map = new HashMap<>();
for(String properyName:reflect){
String targetName = FieldTransfer.trans(properyName, t);
map.put(properyName,targetName);
}
return map;
}
2.3具体的解析方法
public static String trans(String name, Class<?> t ) {
String value="";
try {
Field field = t.getDeclaredField(name);
JsonProperty annotation = field.getAnnotation(JsonProperty.class);
value = annotation.value();
return value;
} catch (NoSuchFieldException|SecurityException e) {
logger.warn("前端传多余字段,此错误不用处理,{}",e.toString());
}
return value;
}
版权声明:本文为loveking6原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。