项目中需要将Websocket服务器传来的JSON字符串解析并存入数据库,该JSON字符串是与系统中的实体一一对应的,如果要单独解析会十分麻烦,而且一大段代码很不美观,于是写了一个小工具方法,自动将JSON转换为对应的JavaBean。
下面上代码:
/** * 将JSON转换为对应的JavaBean * @param jsonObject 需要转换的JSON对象 * @param t 需要转换的JavaBean * @param <T> 泛型 * @return 返回转换后的JavaBean * @throws IllegalAccessException 抛出IllegalAccessException异常 */ public static <T extends Object> T jsonToObject(JSONObject jsonObject,T t) throws IllegalAccessException { // 反射获取该JavaBean所有的属性 Field[] fields = t.getClass().getDeclaredFields(); // 遍历所有属性 for (Field field:fields) { // 如果该属性对应了JSON中的某个值,则对JavaBean进行赋值 if (jsonObject.get(field.getName()) != null) { // 将JavaBean属性的Accessible设为True,避免Private属性无法读取 field.setAccessible(true); // 对相应属性进行赋值 if (field.getType() == java.util.Date.class) { field.set(t,new Date(Long.parseLong(jsonObject.get(field.getName()).toString()))); } else if (field.getType() == java.lang.Byte.class) { field.set(t,Byte.parseByte(jsonObject.get(field.getName()).toString())); } else { field.set(t,jsonObject.get(field.getName())); } } } // 返回转换后的JavaBean return t; }