通过反射获取字段上注解值

 private void serialization(Class<?> requestClass, JSONObject jsonObject) throws IllegalAccessException, InstantiationException {

        Field[] declaredFields = requestClass.getDeclaredFields();
        for (Field declaredField : declaredFields) {
            declaredField.setAccessible(true);
            Class<?> type = declaredField.getType();
            if (type.getTypeName().equals("java.util.List")) {
                Type genericType = declaredField.getGenericType();
                if (null==genericType) {
                    continue;
                }
                if (genericType instanceof ParameterizedType) {
                    ParameterizedType pt = (ParameterizedType) genericType;
                    Class<?> actualTypeArgument = (Class<?>) pt.getActualTypeArguments()[0];
                    JSONArray array = new JSONArray();
                    JSONObject jsonObject1 = new JSONObject();
                    serialization(actualTypeArgument,jsonObject1);
                    array.add(jsonObject1);
                    jsonObject.put(declaredField.getName(),array);
                }
            }else {
                boolean b = declaredField.isAnnotationPresent(ApiModelProperty.class);
                if (b) {
                    ApiModelProperty annotation = declaredField.getAnnotation(ApiModelProperty.class);
                    jsonObject.put(declaredField.getName(), annotation.value());
                }
            }
        }
posted @ 2022-05-12 11:47  青样儿  阅读(214)  评论(0)    收藏  举报