java利用反射将pojo转为json对象

最近做以太坊钱包项目需要与前台进行json交互,写一个工具类,经普通javaBean转为json对象

复制代码
 1 package util;
 2 
 3 import java.lang.reflect.Field;
 4 import java.lang.reflect.Method;
 5 import java.util.List;
 6 
 7 import org.web3j.protocol.core.methods.response.Transaction;
 8 
 9 import com.alibaba.fastjson.JSONArray;
10 import com.alibaba.fastjson.JSONObject;
11 
12 public class JSONUtil {
13     
14     /**
15      * 获取Transaction相应的JSON对象
16      * @param trans
17      * @return
18      */
19     public static JSONObject getTransJSON(Transaction trans) {
20         JSONObject data = getJSON(Transaction.class, trans);
21         return data;
22     }
23     
24     /**
25      * 获取交易信息列表
26      * @param transList
27      * @return
28      */
29     public static JSONArray getTransListJSON(List<Transaction> transList) {
30         JSONArray data = new JSONArray();
31         for(Transaction trans : transList) {
32             JSONObject transJson = getTransJSON(trans);
33             data.add(transJson);
34         }
35         return data;
36     }
37     
38     /**
39      * 获取json对象
40      * @param cls
41      * @param obj
42      * @return
43      */
44     public static JSONObject getJSON(Class<?> cls, Object obj) {
45         JSONObject json = new JSONObject();
46         Field[] fieldArray = cls.getDeclaredFields();
47         for(Field field : fieldArray) {
48             String fieldName = field.getName();
49             String methodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
50             try {
51                 Method method = cls.getMethod(methodName);
52                 Object fieldObject = method.invoke(obj, new Object[0]); 
53                 String fieldValue = null; 
54                 if(fieldObject != null) {
55                     fieldValue = fieldObject.toString();
56                 } 
57                 json.put(fieldName, fieldValue);
58             } catch (Exception e) {
59                 e.printStackTrace();
60             }
61         }
62         return json;
63     }
64     
65 }
复制代码

 

posted @   光何  阅读(2867)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
历史上的今天:
2017-05-03 ES6新特性

点击右上角即可分享
微信分享提示