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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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新特性