2012-08-27 34 views
0

我想創建一個創建我的jsonObject的泛型類。 是否有可能建立一個能創造型動物種類的物體像Android,創建不同類型的jsonObject

{"chunkSize":10,"filters" 
[{"field":"segmentOwners.id","operator":"EQUAL","value":"11578","valueType":"java.lang.Integer"}, 
{"field":"language","operator":"EQUAL","value":"FR","valueType":"java.lang.String"}, 
{"field":"customerId","operator":"EQUAL","value":"77","valueType":"java.lang.Integer"}] 
,"orderBy":[{"field":"creationTime","order":"DESC"}],"page":0} 

或只是一個簡單的請求類:

{login:"mylogin",pwd:"mypwd"} 

我想是這樣的:

@Override 
    protected JSONObject doInBackground(String... params) { 
     byte[] result = null; 
     Iterator iter = mData.entrySet().iterator(); 

     JSONObject jsonObj = new JSONObject(); 

     Iterator it = mData.entrySet().iterator(); 
     while (it.hasNext()) { 
      Map.Entry pairs = (Map.Entry)it.next(); 
      try { 
       jsonObj.put((String) pairs.getKey(), (String) pairs.getValue()); 
      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      it.remove(); // avoids a ConcurrentModificationException 
     } 

但我'm不確定這是相同類型的散列表(字符串,jsonObjet ...?)

回答

1

如果你想從JSON字符串創建的JSONObject情況下,只要做到以下幾點:

JSONObject jsonObj = new JSONObject("<your json string>"); 
+0

+1。 'JSONObject'不關心字符串的內容,只要它們是有效的JSON即可。得到的'JSONObject'將響應'getInt(「chunkSize」)或'getString(「login」)或'getJSONArray(「filters」)';或者,如果對象沒有那個鍵,它會拋出一個'JSONException'。 –

+0

ty,我會盡力用你的方式! –

0

我想創建通用的容器類(即不管它保存了什麼數據(即setFromJson(),getData()),它都會公開統一的API。然後爲每個數據結構創建單獨的對象(即DataLoginDataSomething)。然後,當你從遠程源獲取你的json數據時,你可以創建DataLogin對象並將它交給你的DataContainer(或者將json傳遞給DataContainer,這樣它可以檢測到DataLogin應該被使用並創建它自己,但這需要一些邏輯,是最好的辦法)。然後,所有預計可以在你的json數據上工作的方法都可以交給DataContainer對象和方法,它可以做到getType()(當然你需要自己設置類型),這會返回存儲的數據,然後getData()獲取數據繼續工作。

相關問題