java格式化打印对象(json格式)

硅谷探秘者 1119 0 0

失败的代码,因为没有考虑数组和集合的情况~ !!!

class FormatPrintf{
    public static<T> void print(T t)throws Exception{
        if(isPrimitive(t.getClass())){
            System.out.println(t);
        }
        System.out.println("{");
        dfs(t,0);
        System.out.println("}");
    }
    private static<T> void dfs(T t,int def)throws Exception{
        def++;
        Class<?> clazz = t.getClass();
        Field[] fields=clazz.getDeclaredFields();
        for(Field f:fields){
            f.setAccessible(true);
            Object obj=f.get(t);
            printfSpace(def);
            System.out.print(f.getName());
            if(obj==null||isPrimitive(obj.getClass())){
                System.out.println(": "+obj);
            }else{
                System.out.println(": {");
                dfs(obj,def);
                printfSpace(def);
                System.out.println("}");
            }
        }
    }
    private static<T> boolean isPrimitive(Class<T> clazz) {
        if (clazz.isPrimitive() || clazz.getSuperclass() == Number.class
                || clazz == Boolean.class || clazz == String.class
                || clazz == Date.class) {
            return true;
        }else {
            return false;
        }
    }
    private static void printfSpace(int def){
        for(int i=0;i<def;i++){
            System.out.print("\t");
        }
    }
}

调用printf方法

{
	id: 12134
	name: 姓名
	address: {
		id: 1
		detal: 地址
		empty: null
		point: {
			id: 123
			ad: ad
			date: Wed Aug 19 16:58:15 CST 2020
		}
	}
}

 

猜你喜欢
插件 谷歌 802 谷歌浏览器访问程序接口返回json字符串时比较混乱,如下图安装此插件后的如下图点击右上方按钮下载安装方法开拓展程序,如下将插件拖到这个界面,点击同意安装插件,安装完成后如上图。
数据库基础 2499 mysql年月日时分秒DATE_FORMATSELECTDATE_FORMAT(NOW(),'%Y-%m-%d%H:%i:%s')
其他 1477 时间戳转时间/*时间戳转换*/functioncreateTime(v){vardate=newDate(v);vary=date.getFullYear();varm
java基础 1723 java网络(socket)中传输序列Person类,注意(两个项目中的Person类字节码要相同)packagesocket;importjava.io.Serializable
算法基础 442 c#json字符串转换usingSystem; usingSystem.Runtime.Serialization.Json; usingSystem.IO; usingSystem.Text
框架 1847 springboot请求json数据不返回的指定字段在实体类的字段上加上注解importcom.fasterxml.jackson.annotation.JsonIgnore;例
weblog 377 css样动态变的宽度!DOCTYPEhtmlhtmlheadmetacharset="utf-8"/title/title/headbodydivstyle="width:500px
java基础 77 java根据多空或tab进行字符串分割publicstaticvoidmain(String[]args){Stringtext="dsdfsdddddgsdfsd";String[]split
归档
2018年11月  12 2018年12月  33 2019年01月  28 2019年02月  28 2019年03月  32 2019年04月  27 2019年05月  33 2019年06月  6 2019年07月  12 2019年08月  12 2019年09月  21 2019年10月  8 2019年11月  15 2019年12月  25 2020年01月  9 2020年02月  5 2020年03月  16 2020年04月  4 2020年06月  1 2020年07月  7 2020年08月  13 2020年09月  9 2020年10月  5 2020年12月  3 2021年01月  1 2021年02月  5 2021年03月  7 2021年04月  4 2021年05月  4 2021年06月  1 2021年07月  7 2021年08月  2 2021年09月  8 2021年10月  9 2021年11月  16 2021年12月  14 2022年01月  6
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议
目录
祝愿神州十三飞行乘组平安归来