欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

工具类 根据类生成json测试数据

程序员文章站 2022-06-21 14:45:53
...
package test;

import com.alibaba.fastjson.JSONObject;
import com.inspur.est.mva.uum.generateinfo.data.UumFileTaskDetail;
import com.inspur.est.umc.utils.DateUtils;
import org.junit.Test;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;

/**
 * @author: noob
 * @description :用来生成实体类的json数据
 * @Date : 15:29 2019/06/20
 */

public class 生成测试数据 {
    private HashMap parammap = new HashMap();
    private Class clazz;

    //初始化参数
    public 生成测试数据() {
        parammap.put(String.class, "test");
        parammap.put(Integer.class, DateUtils.getNowSecond());
        parammap.put(int.class, DateUtils.getNowSecond());
        parammap.put(long.class, DateUtils.getNowSecond());
        parammap.put(Long.class, DateUtils.getNowMillis());
        parammap.put(Double.class, 123D);
        parammap.put(double.class, 123D);
        clazz = UumFileTaskDetail.class;
    }

    @Test
    public void test() throws Exception {
        test(clazz);
    }

    public <T> T getValue(Class<T> clazz) {
        return (T) parammap.get(clazz);
        // String key = clazz.getCanonicalName().substring(clazz.getCanonicalName().lastIndexOf(".") + 1);
    }

    public <T> T test(Class<T> clazz) throws Exception {
        T demo = clazz.newInstance();
        Field[] f = clazz.getDeclaredFields();
        for (int i = 0; i < f.length; i++) {
            //获取属相名
            String attributeName = f[i].getName();
            String type = f[i].getType().getName();
            //将属性名的首字母变为大写,为执行set/get方法做准备
            String methodName = attributeName.substring(0, 1).toUpperCase() + attributeName.substring(1);
            try {
                //获取Test类当前属性的setXXX方法(私有和公有方法)
                Method setMethod = clazz.getMethod("set" + methodName, Class.forName(type));
                //获取Test类当前属性的setXXX方法(只能获取公有方法)
                //执行该set方法

                // setMethod.invoke(demo,  getValue(Class.forName(type)));
                setMethod.invoke(demo, Class.forName(type).cast(parammap.get(Class.forName(type))));
            } catch (NullPointerException nu) {
                // System.out.println(MessageFormat.format("本处{0}类型没有值", type));
                System.out.println(String.format("本处%s类型没有值", type));

            } catch (NoSuchMethodException e) {
                continue;
            }
        }
        System.out.println(JSONObject.toJSONString(demo));
        return demo;
    }
}




 

相关标签: 工具代码