如何在另一个映射Java中遍历映射

如何在另一个映射Java中遍历映射,java,hashmap,Java,Hashmap,我有一个包含以下数据的地图,我想处理键bookAttr { "form46": { "bookId": 46, "bookAttr": { "title": "To Kill a Mockingbird", "author": "Harper Lee" } }, "form47"

我有一个包含以下数据的地图,我想处理键
bookAttr

{
  "form46": {
    "bookId": 46,
    "bookAttr": {
      "title": "To Kill a Mockingbird",
      "author": "Harper Lee"
    }
  },
  "form47": {
    "bookId": 66,
    "bookAttr": {
      "title": "1984",
      "author": "George Orwell"
    }
  }
}
我尝试在初始映射上进行迭代,但是在尝试处理我拥有的值时出现错误,因为Java抱怨
对象无法转换为HashMap

HashMap<String, Object> bookForm; // contains bookFormData
输出:

form46={bookAttr={title=To Kill a Mockingbird, author=Harper Lee}, bookId=46}
form47={bookId=66, bookAttr={title=1984, author=George Orwell}}

问题似乎是您正在尝试将
对象
值设置为
HashMap
类型的变量。此外,还可以尝试使用
Map
而不是
HashMap

试着替换

HashMap<String,Object> bookAttributes = value.get("bookAttr");
HashMap bookAttributes=value.get(“bookAttr”);

Map bookAttributes=(Map)value.get(“bookAttr”);

请提供有关如何从指定的JSON获取
图书表单
地图的更多信息。我不确定您需要什么样的信息。您需要知道JSON数据来自何处吗?不,我是关于您正在使用的反序列化工具的。是Jackson的
ObjectMapper
,还是GSON或其他任何东西?我认为这是在使用Jackson的
ObjectMapper
考虑调试以检查您试图强制转换的对象的类型。这可能会给你一个关于你做错了什么的线索。如果您将反序列化代码添加到问题中,它可能会显示应该是什么类型,从而可以更快地得到答案。
form46={bookAttr={title=To Kill a Mockingbird, author=Harper Lee}, bookId=46}
form47={bookId=66, bookAttr={title=1984, author=George Orwell}}
HashMap<String,Object> bookAttributes = value.get("bookAttr");
Map<String,Object> bookAttributes = (Map<String, Object>)value.get("bookAttr");