Home > Java > javaTutorial > body text

Java reflection implements javabean to json example code

高洛峰
Release: 2017-01-19 15:25:40
Original
1879 people have browsed it

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();
 }
}
Copy after login

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;
  }
}
Copy after login

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;
 }
 
}
Copy after login

Test results

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

More java reflection implementation javabean to json For articles related to example codes, please pay attention to the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template