json轉成java對象

來源:互聯網
上載者:User

標籤:

avro產生的程式碼裡,String是CharSequence,不能通過Gson還原序列化,於是有了下面的代碼,ParseArray裡還不完善:

 1 static <T> List<T> parseArray(JSONArray arrary,Class<?> cls) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException, InstantiationException, ClassNotFoundException{ 2       List<T> result = new ArrayList<T>(); 3       String className = cls.getName(); 4       for(int i=0;i<arrary.length();i++){  5           if(className.contains("java.lang")){           6               if(className.equals("java.lang.CharSequence") || 7                       className.equals("java.lang.String")) { 8                   result.add((T) arrary.getString(i)); 9               }else  if(className.equals("java.lang.Double")) {10                   result.add((T) ((Double)arrary.getDouble(i)));11               }  else  if(className.equals("java.lang.Integer")) {12                   result.add((T) ((Integer)arrary.getInt(i)));13               }  else  if(className.equals("java.lang.Boolean")) {14                   result.add((T) ((Boolean)arrary.getBoolean(i)));15               }  16           }else{17               // 解析對象18               result.add((T)json2Bean(arrary.getJSONObject(i),cls));19           }     20       }  21       return result;22   }23 24   public static <T> T json2Bean(JSONObject jsonObject, Class<?> cls) throws IllegalAccessException,  25   InvocationTargetException, NoSuchMethodException, InstantiationException, ClassNotFoundException {  26 //        if (item == null) {  27 //          return null;  28 //        }  29         T item = (T) cls.newInstance();30         Field[] fields = cls.getDeclaredFields();  31         for (Field field : fields) {  32           String varName = field.getName();  33           if (jsonObject.has(varName)) {34               Object value = jsonObject.get(varName); 35 36              Class<?> currentClass = field.getType();37              if(currentClass.equals(List.class)){38                  JSONArray array = (JSONArray)value;39                 String subClassName = field.getGenericType().toString().replace("java.util.List<", "");40                 subClassName = subClassName.substring(0,subClassName.length()-1);41 //                System.out.println(subClassName);                                    42                 Class<?> clasz =    Class.forName(subClassName);43 //                System.out.println(z.getClass());44                 BeanUtils.setProperty(item, varName, parseArray(array ,clasz));45             46              }else{47                  if(value instanceof JSONObject){48                      BeanUtils.setProperty(item, varName, json2Bean((JSONObject)value,currentClass));  49                  }else{50                     if(value instanceof JSONNull){51                         value = null;52                     }53                    BeanUtils.setProperty(item, varName, value);  54                  }55              }56           }else{57               // 設定預設值58               //BeanUtils.setProperty(item, varName, null);    59           }60         }  61          return item;  62     }  

 

json轉成java對象

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.