• 技术文章 >Java >java教程

    java反射实现javabean转json实例代码

    高洛峰高洛峰2017-01-19 15:25:40原创820
    ObjectToJson.java

    package com.ObjectToJson;
    
    import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.util.ArrayList;
    import java.util.Iterator;
    public class ObjectToJson {
    
     
     public  static String ObjListToJson(ArrayList<?> list){
      StringBuilder build=new StringBuilder();
      //迭代器
      Iterator<?> iterator=list.iterator();
      build.append("[");
      String separate="";
      while(iterator.hasNext()){
       build.append(separate);
       //object转json字符串
       String str=ObjToJson(iterator.next());
       build.append(str);
       separate=",";
      }
      build.append("]");
      return build.toString();
     }
    
     @SuppressWarnings("unchecked")
     public  static String ObjToJson(Object obj){
      StringBuilder build=new StringBuilder();
      build.append("{");
      @SuppressWarnings("rawtypes")
      Class cla=null;
      try {
       //反射加载类
       cla=Class.forName(obj.getClass().getName());
      } catch (ClassNotFoundException e) {
       System.out.println(obj.getClass().toString().concat(" 未找到这个类"));
       e.printStackTrace();
       return null;
      }
    
      StringBuffer methodname=new StringBuffer();
      //获取java类的变量
      Field[] fields=cla.getDeclaredFields();
      String separate="";
      for(Field temp:fields){
       build.append(separate);
       build.append("\"");
       build.append(temp.getName());
       build.append("\":");
    
       methodname.append("get");
       methodname.append(temp.getName().substring(0,1).toUpperCase());
       methodname.append(temp.getName().substring(1));
    
       build.append("\"");
       Method method=null;
       try {
        //获取java的get方法
        method=cla.getMethod(methodname.toString());
       } catch (NoSuchMethodException | SecurityException e) {
        methodname.setLength(0);
        e.printStackTrace();
       }
    
       try {
        //执行get方法,获取变量参数的直。
        build.append(method.invoke(obj));
       } catch (IllegalAccessException e) {
        e.printStackTrace();
       } catch (IllegalArgumentException e) {
        e.printStackTrace();
       } catch (InvocationTargetException e) {
        e.printStackTrace();
       }
       build.append("\"");
       methodname.setLength(0);
       separate=",";
      }
    
      build.append("}");
      return build.toString();
     }
    }

    Test.java

     package com.test;
    import java.util.ArrayList;
    import com.ObjectToJson.ObjectToJson;
    public class Test {
      public static void main(String[] args){
       //数据构建
       ArrayList<User> list=getlist();
       //数据转换
       String listjson=ObjectToJson.ObjListToJson((ArrayList<?>)list);
       System.out.println("{\"data\":"+listjson+"}");
      }
    
      public static ArrayList<User> getlist(){
       User user00=new User();
       user00.setUserage("27");
       user00.setUsername("smart");
       user00.setUsersex("man");
    
       User user01=new User();
       user01.setUserage("27");
       user01.setUsername("smart00");
       user01.setUsersex("man");
    
       ArrayList<User> list=new ArrayList<User>();
       list.add(user00);
       list.add(user01);
    
       return list;
      }
    }

    User.java

     package com.test;
    public class User {
     private String username;
     private String usersex;
     private String userage;
    
     public String getUsername() {
      return username;
     }
     public void setUsername(String username) {
      this.username = username;
     }
     public String getUsersex() {
      return usersex;
     }
     public void setUsersex(String usersex) {
      this.usersex = usersex;
     }
     public String getUserage() {
      return userage;
     }
     public void setUserage(String userage) {
      this.userage = userage;
     }
     
    }

    测试结果

     {"data":[{"username":"smart","usersex":"man","userage":"27"},{"username":"smart00","usersex":"man","userage":"27"}]}

    更多java反射实现javabean转json实例代码相关文章请关注PHP中文网!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:java json 省市级联实例代码 下一篇:java设计模式之实现对象池模式示例
    千万级数据并发解决方案

    相关文章推荐

    • 快速上手Java数据结构之字符串• java知识点详解之注解与元注解• 一起来分析java是值传递还是引用传递• 详细整理java枚举的使用总结• 带你搞懂JAVA反射机制(总结分享)
    1/1

    PHP中文网