用反射实现自定义Java对象转化为json工具类

  1. 传入一个object类型的对象
  2. 获取该对象的class类
  3. getFields方法获取该类的所有属性
  4. 对属性进行遍历,并且拼接成Json格式的字符串,注意:通过属性名来推断方法名
  5. 获取Method实例
  6. 通过invoke方法调用
java 复制代码
public static String objectToJsonUtil(Object object) throws Exception {
        String s = "{";
        Class c = object.getClass();
        Field[] fields = c.getFields();
        for(Field f : fields){
            String name = "get"+String.valueOf(f.getName().charAt(0)).toUpperCase()+
                    f.getName().substring(1);
            Method method = c.getMethod(name);
            s+=f.getName()+":"+method.invoke(object)+",";
        }
        s=s.substring(0,s.length()-1);
        s+="}";
        return s;
 }

以User类进行测试

java 复制代码
public class User {
    private int id;
    private String name;

    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public User(){
        
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", id=" + id +
                '}';
    }
}
java 复制代码
User user = new User(1,"tom");
String s = objectToJson(user);
System.out.println(s);
相关推荐
小疯仔5 小时前
轨迹在地图上“漂“了 500 米?一文吃透 WGS-84→GCJ-02 坐标转换引擎(GPX→JSON 实战源码剖析)
小程序·json·notepad++
小荷才露尖尖角,早有蜻蜓立上头5 小时前
过滤器的4种创建方式
java
大圣编蚕5 小时前
Java ByteArrayInputStream 详解:从入门到实战
java·开发语言·算法
程序员阿明5 小时前
idea把插件啥的不默认放在C盘
java·ide·intellij-idea
linweidong6 小时前
中科闻歌Java面试题及参考答案
java·python·大模型·提示词·ai agent·mcp·rag原理
OpenAnolis小助手6 小时前
一句话看透 JVM,SysOM 诊断 Skill 新增 Java 应用诊断能力
java·开发语言·jvm·阿里云·操作系统控制台·sysom
ForteScarlet6 小时前
Kotlin 2.4.20 现已发布,新特性多不多?
android·java·开发语言·开源·kotlin·jetbrains
萧瑟余晖6 小时前
Java深入解析篇六十二之安全机制详解
java·开发语言
小刘在重生~7 小时前
Java 常用类|包装类 装箱拆箱、Integer 缓存面试题
java·python·缓存
Orange_sparkle7 小时前
Pi Agent vs LangGraph:从人机交互、企业 RAG 到持久化工作流的完整选型指南
java·网络·人机交互