2013-04-29 107 views
0

我創建和設置值象Java以下爪哇 - 反思 - 轉換爲JSON陣列

public Class creatObjectWithDefaultValue(String className) throws IllegalArgumentException, IllegalAccessException { 
     DefaultParamValues defaultParamValues = null; 
     Class objectClass = null; 
     try { 
      objectClass = Class.forName(className); 
      Field[] fields = objectClass.getClass().getDeclaredFields(); 

      for(Field f:fields){ 
        if(!f.isAccessible()){ 
         f.setAccessible(true); 
         Class<?> type = f.getType(); 

         if(type.equals(Integer.class)){ 
          f.set(objectClass, defaultParamValues.INTEGER); 
         } else if(type.equals(BigInteger.class)){ 
          f.set(objectClass, defaultParamValues.BIGINTEGER); 
         }else if(type.equals(LocalDate.class)){ 
          f.set(objectClass, defaultParamValues.DATE); 
         }else if(type.equals(Boolean.class)){ 
          f.set(objectClass, defaultParamValues.BOOLEAN); 
         }else if(type.equals(Long.class)){ 
          f.set(objectClass, defaultParamValues.LONGVALUE); 
         } 
         f.setAccessible(false); 
        } 
        //System.out.println(f.get(objectClass)); 
       } 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } 
     return objectClass; 
    } 

現在我想返回的對象轉換爲JSON or JSON Array我嘗試一些像這樣的事情,但它會拋出異常,因爲The constructor JSONObject(Class) is undefined

System.out.println (new JSONObject(te.creatObjectWithDefaultValue("com.hexgen.ro.request.CreateRequisitionRO")).toString()); 

請幫我改正錯誤。

最好的問候

回答

2

你爲什麼不使用Jackson與JSON數據工作API?重塑車輪往往容易出錯,只適用於教育或者沒有圖書館或框架適合您的目的的情況。

現在,JSON < - >對象轉換,沒有一個理由不使用更高級別的框架,除非你明確地試圖探討的反思本身。

1

在JSONObject中沒有帶參數類的構造函數。

,但你可以創建一個類的對象,並把它傳遞到JSONObject的構造函數:

System.out.println (new JSONObject(te.creatObjectWithDefaultValue("com.hexgen.ro.request.CreateRequisitionRO").newInstance()).toString()); 

這隻能與具有參數的構造函數

+0

Understood Philipp我該如何將類轉換爲JSON對象或Json數組 – 2013-04-29 09:34:19