1 @SuppressWarnings({ "deprecation", "unused", "unchecked" }) 2 private Object fromJsonToJava(JSONObject json,Class pojo) throws Exception{ 3 // 首先得到pojo所定義的字段 4 Field [] fields = pojo.getDeclaredFields(); 5 // 根據傳入的Class動態生成pojo對象 6 Object obj = pojo.newInstance(); 7 for(Field field: fields){ 8 // 設置字段可訪問(必須,否則報錯) 9 field.setAccessible(true); 10 // 得到字段的屬性名 11 String name = field.getName(); 12 // 這一段的作用是如果字段在JSONObject中不存在會拋出異常,如果出異常,則跳過。 13 try{ 14 json.get(name); 15 }catch(Exception ex){ 16 continue; 17 } 18 if(json.get(name) != null && !"".equals(json.getString(name))){ 19 // 根據字段的類型將值轉化為相應的類型,並設置到生成的對象中。 20 if(field.getType().equals(Long.class) || field.getType().equals(long.class)){ 21 field.set(obj, Long.parseLong(json.getString(name))); 22 }else if(field.getType().equals(String.class)){ 23 field.set(obj, json.getString(name)); 24 } else if(field.getType().equals(Double.class) || field.getType().equals(double.class)){ 25 field.set(obj, Double.parseDouble(json.getString(name))); 26 } else if(field.getType().equals(Integer.class) || field.getType().equals(int.class)){ 27 field.set(obj, Integer.parseInt(json.getString(name))); 28 } else if(field.getType().equals(java.util.Date.class)){ 29 field.set(obj, Date.parse(json.getString(name))); 30 }else{ 31 continue; 32 } 33 } 34 } 35 return obj; 36 }