简易Java Bean转JSON
来源:互联网 发布:java做题网站 编辑:程序博客网 时间:2024/05/15 04:01
临时写出来的,没考虑太多,暂时不支持二维以上数组,Map,set等数据结构(方法应该类似,进行递归创造json即可).
先附上2个测试bean的代码
public class User {private String username;private String password;private int nubmer;private Date date;private List arrs;private Son son;private Object[] strs;//省略getter,setter}
public class Son {private String name;private int age;<pre name="code" class="html">//省略getter,setter}
package glut.test;import glut.bean.Son;import glut.bean.User;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.HashSet;import java.util.List;import org.junit.Test;public class MyTest {@Testpublic void test() {List arr = new ArrayList();arr.add("aaa");arr.add(456);Son son = new Son();Object[] strs = { "strs1", 1211, "strs3" };User user = new User();user.setStrs(strs);user.setSon(son);user.setUsername("123");user.setPassword("44");user.setDate(new Date());user.setArrs(arr);user.setNubmer(-99);System.out.println(createJSON(user));}//生成JSON的主要方法public String createJSON(Object beanInstance) {String clsPath = beanInstance.getClass().getName();try {Class cls = Class.forName(clsPath);Field[] fs = cls.getDeclaredFields();Method[] methods = cls.getMethods();//存放属性HashSet<String> fields = new HashSet<String>();//存放属性和对应的get方法HashMap<String, Method> fieldAndMethod = new HashMap<String, Method>();//存放最终生成的JSOnStringBuilder sb = new StringBuilder("{");//将所有的属性添加到集合中for (Field f : fs) {fields.add(f.getName());}//找到所有属性的get方法for (Method m : methods) {String methodName = m.getName();if (methodName.startsWith("get")) {String fieldName = methodName.substring(3, 4).toLowerCase()+ methodName.substring(4);if (fields.contains(fieldName)) {fieldAndMethod.put(fieldName, m);}}}//从存放属性和对应的get方法中,将属性作为json的key,get方法返回值作为json的for (String str : fieldAndMethod.keySet()) {Class returnType = fieldAndMethod.get(str).getReturnType();Object value = fieldAndMethod.get(str).invoke(beanInstance,null);if (value == null) {sb.append("\"" + str + "\":" + null);} else {if (returnType.getSimpleName().equals("String")) {sb.append("\"" + str + "\":\"" + value + "\"");} else if (returnType.getSimpleName().equals("Date")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");sb.append("\"" + str + "\":\"" + sdf.format(value)+ "\"");} else if (returnType.getSimpleName().contains("List")) {List temp = (List) value;StringBuilder tempSb = new StringBuilder("[");for (Object o : temp) {if (o instanceof String)tempSb.append("\"" + o + "\"");elsetempSb.append(o);tempSb.append(",");}tempSb.deleteCharAt(tempSb.length() - 1);tempSb.append("]");sb.append("\"" + str + "\":" + tempSb.toString());} else if (returnType.getSimpleName().contains("[]")) {Object[] temp = (Object[]) value;StringBuilder tempSb = new StringBuilder("[");for (Object o : temp) {if (o instanceof String)tempSb.append("\"" + o + "\"");elsetempSb.append(o);tempSb.append(",");}tempSb.deleteCharAt(tempSb.length() - 1);tempSb.append("]");sb.append("\"" + str + "\":" + tempSb.toString());} else if (returnType.getSimpleName().equals("int")) {sb.append("\"" + str + "\":" + value);} else {sb.append("\"" + str + "\":" + createJSON(value));}}sb.append(",");}sb.deleteCharAt(sb.length() - 1);sb.append("}");return sb.toString();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SecurityException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();}return "error";}}
测试结果:
{"nubmer":-99,"username":"123","arrs":["aaa",456],"strs":["strs1",1211,"strs3"],"son":{"age":0,"name":null},"date":"2015-06-27","password":"44"}
写得比较烂,希望以后有机会再来更新更新~
0 0
- 简易Java Bean转JSON
- Java Bean简易教程
- Json字符串转Java Bean
- Java json转Map,转bean,转List<bean>
- 【java】Map List Bean 转 JSON
- Java json reflect Bean
- java bean 转为JSON
- java bean 转为JSON
- java bean 转为JSON
- 【Java】给org.json 添加 json转Bean的方法
- json 数组 转bean
- json在线转Bean
- bean转json
- 使用jackson 进行json字符串转java bean报错
- 自己写的json转java bean工具类
- java中的bean、list、map和JSON的互转
- SpringMvc Bean转Json格式
- java bean和json之间的转换
- [USACO Jan07]考试Schul解题报告
- 查找二叉树最远两个节点的距离
- 滑动到点击位置的ListView
- JAVA数字大写金额转换
- XML编程经验――LIBXML2库使用指南
- 简易Java Bean转JSON
- struts2 自定义过 滤器
- 有用的网址
- 添加修改sa用户(数据库授权总结)
- C++的XML编程经验――LIBXML2库使用指南
- Python.boolean
- 同步阻塞式I/O(一)——基于字节的InputStream、OutputStream
- SelectSort
- C——宏定义,条件编译