2015-12-01 2 views
0

У меня есть карта:Как получить конкретное значение из карты в формате «String»

Map<String, String> value 

Как получить конкретное значение «String» ----> «типа» от значения JSon, как я его получу?

Я попытался ниже код, который возвращает только мне ключ и не дорожит

Iterator it = payload.entrySet().iterator(); 
     while (it.hasNext()) 
     { 
      Map.Entry pair = (Map.Entry)it.next(); 
      System.out.println(pair.getKey() + " = " + pair.getValue()); 
      String key = pair.getKey().toString(); 
      String value = pair.getValue().toString(); 
      Log.d("getActionValue", "key : " + key); 
      Log.d("getActionValue", "value : + value"); 
     } 
+2

'Log.d ("getActionValue", "значение: + значение");' должен быть 'Log.d ("getActionValue", "значение:" + значение) ; ' – pvg

ответ

1

Я хочу, что особенно "String" --- -> «тип» от значения, как я могу получить ?

payload Карта содержит JSONObject's как ценность каждого ключа. поэтому, чтобы получить type необходимости сначала преобразовать строку в JSONObject затем получить значение с помощью type ключа:

JSONObject jsonObject=new JSONObject(value); 
String strType=""; 
if(jsonObject.has("notification-action")){ 
    JSONObject jsonObjectnotification=jsonObject.optJSONObject 
             (""notification-action""); 
    if(jsonObjectnotification.has("type")){ 
     strType=jsonObjectnotification.optString("type"); 
    } 
} 
+0

Спасибо @prosperK, я пробовал, но он не войдет в цикл« if », это означает, что логика для идентификации« type »не работает. Любая другая логика? Будет ли «содержать» работу? – user45678

+0

@ user45678: доступен только http://developer.android.com/reference/org/json/JSONObject.html#has(java.lang.String) метод, который говорит вам, что JSONObject содержит ключ 'type' или не –

+0

@ user45678 : см мой ответ редактировать –

4

Вы не получить доступ к переменной в вашем выводе, так как value все еще находится в строке. Изменить так:

Log.d("getActionValue", "value : " + value); 
2

Ваша проблема здесь Log.d("getActionValue", "value : + value"); она должна быть Log.d("getActionValue", "value : "+ value);

Попробуйте это цикл: -

for (Map.Entry<String, String> entry : payload.entrySet()) 
{ 
    Log.d("getActionValue", "key : " + entry.getKey()); 
    Log.d("getActionValue", "value :" + entry.getValue()); 
} 
1

Вы вход это неправильно.

Должно быть:

Log.d("getActionValue", "value : " + value); 
Смежные вопросы