铸造地图<;字符串,动态>;从Dart到Java HashMap的有效负载

铸造地图<;字符串,动态>;从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',

如何在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"));
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我已经添加了有效负载数据结构。Kotlin
HashMap
在Java中的等价物是
HashMap
,而不是
HashMap
。但是无论如何,为了提供准确的答案,我们需要知道intent对象的类型,以及
getSerializableExtra
函数的签名。@amanin谢谢。了解到Kotlin
HashMap
在Java中的等价物是
HashMap
,我对Java代码进行了如下更新:
HashMap payload=intent.getSerializableExtra(“payload”)并且它工作得很好。非常感谢。