用反射实现自定义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);
相关推荐
嘻哈baby4 小时前
Go 函数中的参数为什么不支持默认值?
java·开发语言·jvm
慧都小项4 小时前
MyEclipse 2026:当 Agent、MCP 与 Java 26 进入 Eclipse 工作流
java·eclipse·springboot·copilot·myeclipse
CoderYanger5 小时前
前端基础——JavaScript(基础语法)(下篇)
java·开发语言·前端·javascript·程序人生·面试·职场和发展
谢斯5 小时前
[unity]如何在unity中添加newtonsoft-json
unity·json·游戏引擎
京师20万禁军教头5 小时前
39面向对象(高级)-设计模式
java·开发语言·设计模式
白山编程大哥6 小时前
Java 迭代器接口详解:从 Iterator 到 ListIterator 的完整指南
java·开发语言·windows
热心网友俣先生6 小时前
2026国赛C题:五年命题规律与预测
java·c语言·前端·数学建模
见叶之秋6 小时前
【C++】String类的使用(含模拟实现)
java·开发语言·c++
竹叶青_七弦6 小时前
从复制粘贴到Harness:Java后端AI编程的工程化之路
java
wuminyu6 小时前
Linux内核线程调度与虚拟线程调度机制系统级深度剖析
java·linux·c语言·jvm·c++