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

 更新时间:2013年12月18日 15:48:23   作者:  
基于java反射机制实现javabean转json字符串实例,大家参考使用吧

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堆&优先级队列示例讲解(下)

    Java堆&优先级队列示例讲解(下)

    这篇文章主要通过示例详细为大家介绍Java中的堆以及优先级队列,文中的示例代码讲解详细,对我们了解java有一定帮助,需要的可以参考一下
    2022-03-03
  • Springboot简单热部署实现步骤解析

    Springboot简单热部署实现步骤解析

    这篇文章主要介绍了Springboot简单热部署实现步骤解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • Mybatis-Plus实现自动生成代码的操作步骤

    Mybatis-Plus实现自动生成代码的操作步骤

    AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率,本文将给大家介绍Mybatis-Plus实现自动生成代码的操作步骤
    2023-10-10
  • Java实现按权重随机数

    Java实现按权重随机数

    这篇文章主要介绍了Java实现按权重随机数,本文给出了提出问题、分析问题、解决问题三个步骤,需要的朋友可以参考下
    2015-04-04
  • Springboot基于BCrypt非对称加密字符串的实现

    Springboot基于BCrypt非对称加密字符串的实现

    本文主要介绍了Springboot基于BCrypt非对称加密字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • intellij idea中安装、配置mybatis插件Free Mybatis plugin的教程详解

    intellij idea中安装、配置mybatis插件Free Mybatis plugin的教程详解

    这篇文章主要介绍了intellij idea中安装、配置mybatis插件Free Mybatis plugin的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • SpringBoot+Netty+WebSocket实现消息发送的示例代码

    SpringBoot+Netty+WebSocket实现消息发送的示例代码

    这篇文章主要介绍了SpringBoot+Netty+WebSocket实现消息发送的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 一文搞懂MyBatis一级缓存和二级缓存

    一文搞懂MyBatis一级缓存和二级缓存

    本文主要介绍了一文搞懂MyBatis一级缓存和二级缓存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • SpringBoot全局Controller返回值格式统一

    SpringBoot全局Controller返回值格式统一

    本文主要介绍了SpringBoot全局Controller返回值格式统一,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • 关于IDEA 2020.3 多窗口视图丢失的问题

    关于IDEA 2020.3 多窗口视图丢失的问题

    这篇文章主要介绍了关于IDEA 2020.3 多窗口视图丢失的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12

最新评论