铸造地图<;字符串,动态>;从Dart到Java HashMap的有效负载
如何在Java中实现这一点 省道代码:铸造地图<;字符串,动态>;从Dart到Java HashMap的有效负载,java,kotlin,dart,hashmap,Java,Kotlin,Dart,Hashmap,如何在Java中实现这一点 省道代码: Map<String, dynamic> payload = { 'id' : 2, 'name' : 'John', 'uniqueId' : 3733337, 'books' : [ { 'id' : 3, 'title' : 'reborn', }, { 'id' : 4, 'title' : 'trust',
Map<String, dynamic> payload = {
'id' : 2,
'name' : 'John',
'uniqueId' : 3733337,
'books' : [
{
'id' : 3,
'title' : 'reborn',
},
{
'id' : 4,
'title' : 'trust',
}
]
val payload: HashMap<String, Any> = intent.getSerializableExtra("payload") as HashMap<String, Any>
HashMap<String, String> payload = new HashMap<>(intent.getSerializableExtra("payload"));
Map有效负载={
“id”:2,
“姓名”:“约翰”,
“唯一性”:3733337,
“书籍”:[
{
"id":3,,
“标题”:“重生”,
},
{
“id”:4,
“标题”:“信托”,
}
]
})
Kotlin代码(这很好):
Map<String, dynamic> payload = {
'id' : 2,
'name' : 'John',
'uniqueId' : 3733337,
'books' : [
{
'id' : 3,
'title' : 'reborn',
},
{
'id' : 4,
'title' : 'trust',
}
]
val payload: HashMap<String, Any> = intent.getSerializableExtra("payload") as HashMap<String, Any>
HashMap<String, String> payload = new HashMap<>(intent.getSerializableExtra("payload"));
val负载:HashMap=intent.getSerializableExtra(“负载”)作为HashMap
Java代码(这不起作用):
Map<String, dynamic> payload = {
'id' : 2,
'name' : 'John',
'uniqueId' : 3733337,
'books' : [
{
'id' : 3,
'title' : 'reborn',
},
{
'id' : 4,
'title' : 'trust',
}
]
val payload: HashMap<String, Any> = intent.getSerializableExtra("payload") as HashMap<String, Any>
HashMap<String, String> payload = new HashMap<>(intent.getSerializableExtra("payload"));
HashMap负载=新的HashMap(intent.getserializabletra(“负载”);
能否确保该值是哈希映射? 在JVM上有许多Map的实现。 — 但问题可能是,虽然Kotlin的as
确实是一个强制转换(如果值是其他映射实现,那么就会抛出异常),但Java代码不执行强制转换,而是创建一个新的HashMap。 由于无法从任何随机对象创建哈希映射,因此会出现错误。 通过强制转换Kotlin版本(使用(HashMap)
)而不创建新映射来匹配Kotlin版本,或者(更安全的做法是)将其强制转换为映射
,并从中创建新的HashMap。@gidds我已经添加了有效负载数据结构。KotlinHashMap
在Java中的等价物是HashMap
,而不是HashMap
。但是无论如何,为了提供准确的答案,我们需要知道intent对象的类型,以及getSerializableExtra
函数的签名。@amanin谢谢。了解到KotlinHashMap
在Java中的等价物是HashMap
,我对Java代码进行了如下更新:HashMap payload=intent.getSerializableExtra(“payload”)代码>并且它工作得很好。非常感谢。