package com.pavis.app.saasbacken.utils; import com.alibaba.fastjson.JSON; import io.swagger.annotations.ApiModelProperty; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @program: push-saas * @description: * @author: Guanzi * @created: 2021/11/08 16:44 */ public class PageSettingUtils { /** * 根据实体类获取对应的key-value。 * * @param instance 实体类对象。 * @param fieldMap 待忽略的属性。 * @return * @throws NoSuchFieldException */ // public static Map getDeclaredFieldsInfo(Object instance, JSONObject jsonObject) throws NoSuchFieldException { public static Map getDeclaredFieldsInfo(Object instance, Map fieldMap) throws NoSuchFieldException { Map map = new HashMap(); Class clazz = instance.getClass(); Field[] fields = clazz.getDeclaredFields(); boolean b = false; for (int i = 0; i < fields.length; i++) { System.out.println("i:" + fields[i].getName()); // 除过fieldMap中的属性,其他属性都获取 if (!fieldMap.containsKey(fields[i].getName())) { System.err.println("********" + fields[i].getName()); // Field field=clazz.getDeclaredField(fields[i].getName()); boolean annotationPresent = fields[i].isAnnotationPresent(ApiModelProperty.class); if (annotationPresent) { // 获取注解值 String name = fields[i].getAnnotation(ApiModelProperty.class).value(); map.put(name, fields[i].getName()); } } } return map; } /** * 根据实体类获取对应的key-value。 * * @param instance 实体类对象。 * @param fieldMap 待忽略的属性。 * @return * @throws NoSuchFieldException */ // public static Map getDeclaredFieldsInfo(Object instance, JSONObject jsonObject) throws NoSuchFieldException { public static List> getDeclaredFields(Object instance, Map fieldMap) throws NoSuchFieldException { Class clazz = instance.getClass(); Field[] fields = clazz.getDeclaredFields(); boolean b = false; List> maps = new ArrayList<>(); for (int i = 0; i < fields.length; i++) { Map map = new HashMap(); System.out.println("i:" + fields[i].getName()); // 除过fieldMap中的属性,其他属性都获取 if (!fieldMap.containsKey(fields[i].getName())) { System.err.println("********" + fields[i].getName()); // Field field=clazz.getDeclaredField(fields[i].getName()); boolean annotationPresent = fields[i].isAnnotationPresent(ApiModelProperty.class); if (annotationPresent) { // 获取注解值 String name = fields[i].getAnnotation(ApiModelProperty.class).value(); map.put(name, fields[i].getName()); maps.add(map); } } } System.err.println("maps:" + JSON.toJSONString(maps)); return maps; } }