【发布时间】:2021-03-09 08:19:42
【问题描述】:
我有一个如下所示的 JSON 文件。我想读取所有值并检查输入字符串是否包含 JSON 值之一,返回 true。但在我的尝试下,它总是返回false。
{
"RECORDS": [
{
"word": "word1",
"language": "en"
},
{
"word": "word2",
"language": "en"
},
{
"word": "word3",
"language": "en"
}
]
}
我的方法
public static boolean check(String content) throws IOException {
File file = ResourceUtils.getFile("classpath:sample.json");
ObjectMapper mapper = new ObjectMapper();
Map<?, ?> map = mapper.readValue(file, Map.class);
for (Map.Entry<?, ?> entry : map.entrySet()) {
if (content.contains(entry.getValue().toString())) {
return true;
} else
return false;
}
return false;
}
【问题讨论】:
-
return true中断循环迭代,并从函数中返回您始终在最底部return false -
似乎问题在于
.contains()比较。你想要什么样的结果?如果要检查json中是否存在content,条件应该是:entry.getValue().toString().contains(content)。 -
@Dharma
entry.getValue().toString().contains(content)仅在内容完全等于 json 值时才有效。如果内容是一个段落,则再次返回 false。 -
@SeniorFullstack 你能建议我如何解决这个问题吗?
标签: java collections java-8 jackson java-stream