gpt4 book ai didi

java - mustache -Java : How to get value in Map by key

转载 作者:太空宇宙 更新时间:2023-11-04 11:13:03 26 4
gpt4 key购买 nike

我正在 Java 中使用 JMustache。

我的 Mustache 模板中有 Map 变量。如何获取映射中特定键的值,就像我们在 Java 中所做的那样 (map.get())。

我知道如何迭代模板中映射的键和值。但我想要一个无需迭代的解决方案,以便我可以计算表达式,例如:

数据

{
"cities": [
{
"Tokyo": {
"overview": {
"population": "19000000",
"area": "450000"
}
}
},
{
"Sydney": {
"overview": {
"population": "4500000",
"area": "6250000"
}
}
}
]
}

模板

"The population of Tokyo is: {{cities['Tokyo'].overview.population}}"

最佳答案

首先,您的 Mustache 语法存在问题。 cities['Tokyo'] 无效。 cities 是一个数组。您可以迭代数组,但不能根据其键值(或与此相关的任何其他条件)选择元素。

所以这个 JSON 对象更适合:

{
"cities": {
"Tokyo": {
"overview": {
"population": "19000000",
"area": "450000"
}
},
"Sydney": {
"overview": {
"population": "4500000",
"area": "6250000"
}
}
}
}

其次,您必须使用 MapList 对象将 JSON String 解析为结构。大多数 JSON 解析器都能够做到这一点。在此示例中,我使用 noggit .

@Test
public void testSO_45787572() throws IOException {
final String json =
"{\n" +
" \"cities\": {\n" +
" \"Tokyo\": {\n" +
" \"overview\": {\n" +
" \"population\": \"19000000\",\n" +
" \"area\": \"450000\"\n" +
" }\n" +
" },\n" +
" \"Sydney\": {\n" +
" \"overview\": {\n" +
" \"population\": \"4500000\",\n" +
" \"area\": \"6250000\"\n" +
" }\n" +
" }\n" +
" }\n" +
"}";
assertEquals("The population of Tokyo is: 19000000", Mustache.compiler()
.compile(new StringReader("The population of Tokyo is: {{cities.Tokyo.overview.population}}"))
.execute(new ObjectBuilder(new JSONParser(json)).getObject())
);
}

关于java - mustache -Java : How to get value in Map by key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45787572/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com