2012-11-09 41 views
1

我能夠以這種格式打印我的輸出System.out.println(map.get("email"));//this is printing fine但我無法在將它分配給字符串變量後輸出相同的值。我試過了:String email=(String) map.get("email"); System.out.println("Email--"+email);//But this is not printing
我如何將地圖值轉換爲字符串?請幫幫我。如何將映射值轉換爲Java中的字符串

我全碼:

String url = "https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=" 
       + authResponse.accessToken; 
      final StringBuffer r = new StringBuffer(); 
      final URL u = new URL(url); 
      final URLConnection uc = u.openConnection(); 
      final int end = 1000; 
      InputStreamReader isr = null; 
      BufferedReader br = null; 
      isr = new InputStreamReader(uc.getInputStream()); 
      br = new BufferedReader(isr); 
      final int chk = 0; 
      String pat = "\"(.*)\": \"(.*)\","; 
      Pattern pattern = Pattern.compile(pat); 
      Matcher matcher = null; 
      Map map = new HashMap(); 

      while ((url = br.readLine()) != null) 
      { 
       if ((chk >= 0) && ((chk < end))) { 
        matcher = pattern.matcher(url); 
        if(matcher.find()) { 
         map.put(matcher.group(1), matcher.group(2)); 
        } 
        //r.append(url).append('\n'); 
       } 
      } 
       System.out.println(map.get("email")); 
       String email=(String) map.get("email"); 
       System.out.println(email); 

回答

1

試試這個:

String email=map.get("email").toString();

5

使用任何集合或地圖時,總是使用泛型類型,當然,除非你正在使用的Java版本比舊的1.5。因此,將您的地圖聲明爲: -

Map<String, String> map = new HashMap<String, String>(); 

然後你根本不需要一個類型轉換。 map.get("email")只會給你String類型結果。

+1

+1提出了這個正確的解決方案,而不只是固定代碼 –

1

使用toString()""+

String s = map.get("email").toString();

或者

String s = map.get("email")+"";

-而且總是喜歡使用GenericsCollection,所以您在集合中輸入特定類型並從集合中獲取該特定類型。

如:

Map<String, String> map = new HashMap<String, String>(); 
+0

如果你想讓它與空工作,然後用'「」 +'或'將String.valueOf(map.get(「電子郵件」 ))'(在兩種情況下它都會給出字符串「null」) – Xavier

+0

@Xavier'+「」'將與null一起工作。 –

+0

這就是我要說的。只有'map.get(「email」)。toString()'不適用於空值 – Xavier

0

已推薦使用特定類型的地圖,如果你是在Java的工作1.5+。您的地圖減速將爲Map<String,String> map

Map<String,String> map = new HashMap<>(); // Diamond operator available in java 7 
String email= map.get("email"); 


Map<String,String> map = new HashMap<String,String>(); // for java 5+ 
String email= map.get("email"); 
相關問題