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

硅谷探秘者 2334 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
		}
	}
}

 


评论区
请写下您的评论...
暂无评论...
猜你喜欢
插件 谷歌 1666 谷歌浏览器访问程序接口返回json字符串时比较混乱,如下图安装此插件后的如下图点击右上方按钮下载安装方法开拓展程序,如下将插件拖到这个界面,点击同意安装插件,安装完成后如上图。
数据库基础 3452 mysql年月日时分秒DATE_FORMATSELECTDATE_FORMAT(NOW(),'%Y-%m-%d%H:%i:%s')
其他 2176 时间戳转时间/*时间戳转换*/functioncreateTime(v){vardate=newDate(v);vary=date.getFullYear();varm
java基础 2708 java网络(socket)中传输序列Person类,注意(两个项目中的Person类字节码要相同)packagesocket;importjava.io.Serializable
算法基础 1183 c#json字符串转换usingSystem; usingSystem.Runtime.Serialization.Json; usingSystem.IO; usingSystem.Text
框架 3905 springboot请求json数据不返回的指定字段在实体类的字段上加上注解importcom.fasterxml.jackson.annotation.JsonIgnore;例
weblog 1122 css样动态变的宽度!DOCTYPEhtmlhtmlheadmetacharset="utf-8"/title/title/headbodydivstyle="width:500px
java基础 1115 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  7 2022-05  1 2022-08  3 2022-09  2 2022-10  2 2022-12  5 2023-01  3 2023-02  1 2023-03  4 2023-04  2 2023-06  3 2023-07  4 2023-08  1 2023-10  1 2024-02  1 2024-03  1 2024-04  1
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础 xxl-job rabbitmq haproxy srs 音视频 webrtc javascript
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。