Java 如何使用嵌套的ArrayList在HashMap上迭代

Java 如何使用嵌套的ArrayList在HashMap上迭代,java,for-loop,Java,For Loop,我目前正在一个映射中保存一个JSON响应,我正在努力迭代嵌套的HashMap值。例如: 索引0 索引1->键:“示例”: 关键词:“示例2” 值“示例3”(ArrayList) 键,值。。。(HashMap) 我的地图看起来像: HashMap<Object, Object> map = (HashMap< Object, Object >) result.getBody(); { "metadata": { "page": 0, "page

我目前正在一个映射中保存一个JSON响应,我正在努力迭代嵌套的HashMap值。例如:

  • 索引0
  • 索引1->键:“示例”:

    • 关键词:“示例2”
    • 值“示例3”(ArrayList)

      • 键,值。。。(HashMap)
我的地图看起来像:

HashMap<Object, Object> map = (HashMap< Object, Object >) result.getBody();
{
"metadata": {
    "page": 0,
    "pageSize": 1,
    "pageCount": 10,
    "totalCount": 10
},
"Users": [
    {
        "ID": 1216411,
        "name": "John",
        "name": "John",
        "Order_Details": {
            "id": 1216411234,
            "item": "Electric Razer",
            "region": {
                "name": "United States",
                "regionCode": "US"
            }
        },
        "Suppliers": [
        ...

假设你有这样的东西

Map=。。。
对于(映射lhms:Map.values()){
for(长值:lhms.values()){
系统输出打印项次(值);
}
}

WJS对您提出的问题给出了非常好的回答。。。 ... 但听起来你肯定想重新审视你的“设计”

具体来说,您希望如何将JSON数据映射到Java对象

正如Pshemo所说,hashmap非常适合快速查找给定的密钥。。。但是,您不能按照创建列表的顺序轻松迭代列表

还有一个问题是,您希望如何“简单”或“复杂”地生成“嵌套数据”

所有这些都会影响创建、阅读和/或更新列表的容易程度

强烈建议:考虑使用杰克逊:


地图的对象值是什么类型的结构?列表、集合等?您不应该使用映射的索引,因为它们不保证任何顺序(尤其是HashMap)。正因为如此,你的问题看起来像。请尝试解释您真正想要做的事情,因为当前您可能走错了方向。@WJS它将作为LinkedHashMap返回。Pshemo我从一个响应实体获得一个JSON响应,为了便于我操作,我被建议将响应存储在Object.class中,然后使用一个映射来存储响应。如果您需要有关如何遍历JSON的帮助,请向我们展示JSON。您的“格式化”示例无法解释。至少,我不知道该项目符号列表的JSON/Map是什么。@Andreas我已经添加了一个示例,说明我在Spring Boot中通过响应实体方法返回的JSON。谢谢你的解决方案。不幸的是,在转换类型用户时,我得到了一个不兼容的类型。我唯一能想到的是,它不是类型用户,或者是另一个包中的类型用户。看看你的例子,似乎一切都是一个字符串,或者Java和相应的JSON之间根本没有映射。这就是为什么我建议是的,我相信我可能有一个错误的方法开始,我能够使用Jackson将其转换为JSON字符串。谢谢你们两位的帮助谢谢Paul,我刚刚看了那个教程,我能够将对象转换成JSON字符串,明天我将看如何传递给User类。您是否知道将JSON字符串中的项保存到User.class中不同变量的最佳方法?谢谢
 for (Map.Entry<Opportunities, Opportunities> entry : resultMap.entrySet()) {
    System.out.println(entry.getValue());
}
{
"metadata": {
    "page": 0,
    "pageSize": 1,
    "pageCount": 10,
    "totalCount": 10
},
"Users": [
    {
        "ID": 1216411,
        "name": "John",
        "name": "John",
        "Order_Details": {
            "id": 1216411234,
            "item": "Electric Razer",
            "region": {
                "name": "United States",
                "regionCode": "US"
            }
        },
        "Suppliers": [
        ...