java 反射实现javabean转json

1. [文件] ObjectToJson.java ~ 2KB     下载(39)     跳至 [1] [2] [3] [4] [全屏预览]

01 package com.ObjectToJson;
02  
03 import java.lang.reflect.Field;
04 import java.lang.reflect.InvocationTargetException;
05 import java.lang.reflect.Method;
06 import java.util.ArrayList;
07 import java.util.Iterator;
08  
09 public class ObjectToJson {
10      
11      
12     public  static String ObjListToJson(ArrayList<?> list){
13         StringBuilder build=new StringBuilder();
14         //迭代器
15         Iterator<?> iterator=list.iterator();
16         build.append("[");
17         String separate="";
18         while(iterator.hasNext()){
19             build.append(separate);
20             //object转json字符串
21             String str=ObjToJson(iterator.next());
22             build.append(str);
23             separate=",";
24         }
25         build.append("]");
26         return build.toString();
27     }
28      
29     @SuppressWarnings("unchecked")
30     public  static String ObjToJson(Object obj){
31         StringBuilder build=new StringBuilder();
32         build.append("{");
33         @SuppressWarnings("rawtypes")
34         Class cla=null;
35         try {
36             //反射加载类
37             cla=Class.forName(obj.getClass().getName());
38         catch (ClassNotFoundException e) {
39             System.out.println(obj.getClass().toString().concat(" 未找到这个类"));
40             e.printStackTrace();
41             return null;
42         }
43          
44         StringBuffer methodname=new StringBuffer();
45         //获取java类的变量
46         Field[] fields=cla.getDeclaredFields();
47         String separate="";
48         for(Field temp:fields){
49             build.append(separate);
50             build.append("\"");
51             build.append(temp.getName());
52             build.append("\":");
53              
54             methodname.append("get");
55             methodname.append(temp.getName().substring(0,1).toUpperCase());
56             methodname.append(temp.getName().substring(1));
57              
58             build.append("\"");
59             Method method=null;
60             try {
61                 //获取java的get方法
62                 method=cla.getMethod(methodname.toString());
63             catch (NoSuchMethodException | SecurityException e) {
64                 methodname.setLength(0);
65                 e.printStackTrace();
66             }
67              
68             try {
69                 //执行get方法,获取变量参数的直。
70                 build.append(method.invoke(obj));
71             catch (IllegalAccessException e) {
72                 e.printStackTrace();
73             catch (IllegalArgumentException e) {
74                 e.printStackTrace();
75             catch (InvocationTargetException e) {
76                 e.printStackTrace();
77             }
78  
79             build.append("\"");
80             methodname.setLength(0);
81             separate=",";
82         }
83          
84         build.append("}");
85         return build.toString();
86     }
87 }

2. [文件] Test.java ~ 746B     下载(20)     

01 package com.test;
02  
03 import java.util.ArrayList;
04  
05 import com.ObjectToJson.ObjectToJson;
06  
07 public class Test {
08      public static void main(String[] args){
09          //数据构建
10          ArrayList<User> list=getlist();
11          //数据转换
12          String listjson=ObjectToJson.ObjListToJson((ArrayList<?>)list);
13          System.out.println("{\"data\":"+listjson+"}");
14      }
15       
16      public static ArrayList<User> getlist(){
17          User user00=new User();
18          user00.setUserage("27");
19          user00.setUsername("smart");
20          user00.setUsersex("man");
21           
22          User user01=new User();
23          user01.setUserage("27");
24          user01.setUsername("smart00");
25          user01.setUsersex("man");
26           
27          ArrayList<User> list=new ArrayList<User>();
28  
29          list.add(user00);
30          list.add(user01);
31           
32          return list;
33      }
34  
35 }

3. [文件] User.java ~ 494B     下载(20)     

01 package com.test;
02  
03 public class User {
04     private String username;
05     private String usersex;
06     private String userage;
07      
08     public String getUsername() {
09         return username;
10     }
11     public void setUsername(String username) {
12         this.username = username;
13     }
14     public String getUsersex() {
15         return usersex;
16     }
17     public void setUsersex(String usersex) {
18         this.usersex = usersex;
19     }
20     public String getUserage() {
21         return userage;
22     }
23     public void setUserage(String userage) {
24         this.userage = userage;
25     }
26      
27  
28 }

4. [代码]测试结果     

1 {"data":[{"username":"smart","usersex":"man","userage":"27"},{"username":"smart00","usersex":"man","userage":"27"}]}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值