当前位置: 首页 > 知识库问答 >
问题:

如何从嵌套的LinkedHashMap中获取数据

濮阳旭东
2023-03-14
Map<String, Object> response = new LinkedHashMap<String, Object>() {{
    put("data", new LinkedHashMap<String, Object>() {{
        put("images", new LinkedHashMap<String, Object>() {{
            put("original", new LinkedHashMap<String, Object>() {{
                put("url", "test");
            }});
        }});
    }});
}};
Compilation failed:
cannot find symbol
symbol:   method get(java.lang.String)
location: class java.lang.Object

结果{data={images={original={url=test}}}};

共有1个答案

田兴朝
2023-03-14

“正确”的方式是

Object url = ((Map<String,Object>) ((Map<String,Object>) ((Map<String,Object>) response.get("data")).get("images")).get("original")).get("url");

是的,这是丑陋的。主要是因为你选择的类型。

通过将映射的值设置为对象,您可以在添加内容上获得灵活性,但是您将负担交给了映射的“阅读器”,使其实际上可以强制执行任何他们想要的内容。而且由于涉及泛型,所有这些转换都是未检查的(即运行时可以检查返回的对象是否实际上是map,但不能验证它们是否真的是map

Map<String, Object> response = Map.of(
    "data", Map.of(
        "images", Map.of(
            "original", Map.of(
                "url", "test"
            )
        )
    )
);
 类似资料:
  • 我试图解析一个OpenAPI JSON文件,并访问值来构建一个rest模型类。我尝试使用对象映射器解析JSON文件,并将其发送到一个接收

  • 我有下一个带嵌套括号的字符串: 我想用打印出来的每个括号的值填充一个数组:

  • elmentui table里的 scope.row如何取下面类型数据结构最内层的数据 1

  • 然后连空白节点都是嵌套的,这是我不想要的。有什么方法可以使用Jena获得这种结构吗?或者有没有其他的Java库可以更好地处理这一点?

  • 我使用的函数返回LinkedHashMap中的键值对。 注意:我无法将LinkedHashMap更改为代码中的任何其他映射,因为该函数正在其他几个函数中使用。 我也在谷歌上搜索并尝试使用TreeMap,它以升序给出我们想要的结果。但是,在树映射中,键是按升序排列的,而不是值。 我的要求主要是价值观。 如何按升序获取值。 提前谢谢!!!!

  • 我知道,要获取地图,我可以使用fetchMap,但它不支持LinkedHashMap,我想保持由orderBy创建的插入顺序。 我试过了 但是字段1和字段2部分给了我以下错误。 无法解析“T”中的方法“field1” 希望有人能帮我~ 谢谢 解决方案: 基于@Lukas的回答,我尝试了几次,发现必须做到以下几点: > 在方法中,所有字段都必须有一个类型,除了那些计算的,其中添加类型会抛出在字段列表