2016-05-30 165 views
0

嗨我必須發送映射到服務器,服務器將從中獲取信息。我有兩件式的映射代碼首先是(名字和密鑰變量)Android映射不起作用

String user = "{ 'id':" + userId +","+"'response':{'id':"+userId+",'access':"+"'"+name+":"+key+"'"+"}}"; 

     Map<String, Object> userMap = new Gson().fromJson(user, new TypeToken<HashMap<String, Object>>() {}.getType()); 
     Set<String> keys = userMap.keySet(); 
     for (String i:keys){ 
      Log.d("user",i+" "+userMap.get(i)); 
     } 

這裏我需要Concat的串並分析,然後將其轉換成地圖。這段代碼已經工作。而我的第二套代碼是

String user1 = "{id="+userId+", access="+""+name+":"+key+""+"}"; 
     Map<String,Object> tuc = new HashMap<>(); 
     tuc.put("id",userId); 
     tuc.put("access",""); 
     Set<String> key = tuc.keySet(); 
     for (String i:key){ 
      Log.d("user",i+" "+tuc.get(i)); 
     } 

此代碼不起作用,表示服務器不接受此代碼。但是,當我打印鍵值對時,兩個代碼的結果相同。我的領導不喜歡使用第一段代碼。任何人都可以解釋爲什麼,我在過去兩天中受到了打擊。謝謝你,謝謝你,因爲我英語不好。

回答

0

在Java中,HashMap只能接受<key, value>對。它不像Json,在你的情況下是{key1:value1, key2:value2, ...}格式。

因此,如果您打算將其格式從{key1:value1, key2:value2, ...}轉換爲<key, value>。我的建議是將value2, value3, ...合併爲一個對象(如String)作爲值,value1作爲關鍵字。

請參閱https://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html瞭解更多詳情。

+0

謝謝,但這是行不通的,因爲它會從關鍵值「id」獲得userId。提供「id」和「access」作爲鍵非常重要 – Karthik

+0

在第一個代碼「access」的服務器中:{ 「id」.....它接受,但第二個代碼「訪問」:「{」id「....你可以看到唯一的區別是有分號後的雙引號 – Karthik

+0

對不起,我想我有誤讀你的代碼的一部分。我目前的答案是否正確? –