如何提取java.util.Map对象中的数据?
在中,有以下代码示例:如何提取java.util.Map对象中的数据?,java,firebase-cloud-messaging,Java,Firebase Cloud Messaging,在中,有以下代码示例: public void onMessageReceived(RemoteMessage remoteMessage) { if (remoteMessage.getData().size() > 0) { Log.d(TAG, "Message data payload: " + remoteMessage.getData()); } } Android Studio告诉我,remoteMessage.getData()返回一种类型的java.ut
public void onMessageReceived(RemoteMessage remoteMessage) {
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
}
}
Android Studio告诉我,remoteMessage.getData()
返回一种类型的java.util.Map
。发送端的数据是Json格式的,如果发送的数据是{“a”:“b”,“c”:“d”}
,remoteMessage.getData().toString()
将生成:
{a=b, c=d}
我对Java非常陌生。即使知道所使用的Json结构,如何访问getData()
中返回的数据
我试过:
HashMap<String, String> Data = (HashMap<String,String>)remoteMessage.getData();
HashMap Data=(HashMap)remoteMessage.getData();
但我得到了以下运行时异常:
无法将android.support.v4.util.Array.Map转换为java.util.HashMap
试试这个:
Map<String, String> data = remoteMessage.getData();
Map data=remoteMessage.getData();
Android Studio告诉我,remoteMessage.getData()
返回一种类型的java.util.Map
确切地说,它返回一个映射。它不会返回HashMap
,也不应该依赖于Map的任何特定实现。地图还有许多其他的实现,例如TreeMap
您应该使用这样的地图:
Map<String, String> data = remoteMessage.getData();
Map data=remoteMessage.getData();
如果我们查看的文档,我们会看到您正在检索地图
所以你只需要使用这个方法来得到,让我们看看。。。“a”
的值
Map data=remoteMessage.getData();
字符串值=数据。获取(“a”);/>“b”
如果您不知道JSON,也可以使用方法迭代映射您不需要强制转换任何内容。您有一个java.util.Map,因此请阅读java.util.Map的javadoc,它描述了从映射中获取键、值、条目并使用它们的所有可用方法。如果我给你一辆车,而你已经学会了驾驶,你可以驾驶那辆车,而不知道这辆车是什么牌子的,发动机是什么类型的,刹车是什么类型的。这是一辆车,它的性能和其他车一样。谢谢。如果我将该数据分配给一个java.util.Map
对象,我应该在K和V中放入什么?Map Map=remoteMessage.getData()
(取决于映射的类型,但对于Json,它可以是字符串、对象
或字符串、JsonObject
不确定为什么要修改收到的消息。但是如果确实需要,RemoteMessage.getData()会返回一个映射,如其文档所示:。该文档是一个映射,表明它有一个方法put(K,V):。因此您将使用map.put(“someKey”,“someValue”)
@OldGeezer表示“a”和“b”的类型,即字符串和字符串
Map<String, String> data = remoteMessage.getData();
String value = data.get("a"); // > "b"