我在我的Java应用程序中使用Jackson JSON库及其Tree Model系统(JsonNode
)。在这种情况下,我需要检查ArrayNode
是否包含给定的JsonNode
。我正在浏览JavaDocs,并且没有看到ArrayNode
的任何类型的。包含()
方法。我最终自己写了一个包含方法:
public static boolean arrayNodeContains(ArrayNode arrayNode, JsonNode node) {
Stream<JsonNode> nodeStream = StreamSupport.stream(arrayNode.spliterator(), false);
return nodeStream.anyMatch(j -> j.equals(node));
}
单元测试:
@Test
public void testArrayNodeContains()
throws IOException
{
ObjectMapper mapper = new ObjectMapper;
String arrayJsonString = "[{\"foo\":\"bar\"},{\"foo\":\"baz\"},{\"baz\":\"bar\"}]";
String nodeTrueJsonString = "{\"foo\":\"bar\"}";
String nodeFalseJsonString = "{\"foo\":\"brains\"}";
List<Object> list = mapper.readValue(arrayJsonString, List.class);
ArrayNode arrayNode = mapper.valueToTree(list);
Map<String, Object> nodeTrueMap = mapper.readValue(nodeTrueJsonString, Map.class);
JsonNode nodeTrue = mapper.valueToTree(nodeTrueMap);
assertTrue(arrayNodeContains(arrayNode, nodeTrue));
Map<String, Object> nodeFalseMap = mapper.readValue(nodeFalseJsonString, Map.class);
JsonNode nodeFalse = mapper.valueToTree(nodeFalseMap);
assertFalse(arrayNodeContains(arrayNode, nodeFalse));
}
我是否错过了杰克逊的一些东西,我正在复制一些我错过的图书馆方法。否则,还有比我做的更好的方法吗?
有一个选项是使用equals方法与JsonNode和比较器
使用传入的比较器对象调用可自定义比较的入口方法。节点将处理结构化类型(数组、对象)的遍历,但在标量值比较时遵从比较器
新的增强790用于添加JsonNode.equals(比较器,JsonNode)以支持可配置/外部相等比较:
// but. Custom comparator can make all the difference
Comparator<JsonNode> cmp = new Comparator<JsonNode>() {
@Override
public int compare(JsonNode o1, JsonNode o2) {
if (o1.equals(o2)) {
return 0;
}
if ((o1 instanceof NumericNode) && (o2 instanceof NumericNode)) {
double d1 = ((NumericNode) o1).asDouble();
double d2 = ((NumericNode) o2).asDouble();
if (d1 == d2) { // strictly equals because it's integral value
return 1;
}
}
return 0;
}
};
// but with custom comparator, yes
assertTrue(root1.equals(cmp, root2));
问题内容: 给定一个整数,如何使用Java检查它是否包含0? 如何才能做到这一点? 问题答案: 您是说小数表示形式是否包含0?绝对 最简单的 方法是: 别忘了一个数字并不“固有地”包含一个0或不包含0(当然,零本身除外)-它取决于底数。因此,十进制的“ 10”是十六进制的“ A”,而十六进制的“ 10”是十进制的“ 16”……在两种情况下,结果都会改变。 在整数的十进制表示形式中,可能有更有效的方
问题内容: 如何检查字符串是否包含\ n或换行符? 问题答案: 如果字符串是在同一程序中构造的,则建议使用以下命令: 但是,如果您指定使用\ n,则此驱动程序说明了如何做: 导致 回应您的评论: 结果是
我正在寻找一个运算符,它允许我检查字段的值是否包含某个字符串。 比如: 可能吗?
本文向大家介绍检查Java ArrayList是否包含给定项,包括了检查Java ArrayList是否包含给定项的使用技巧和注意事项,需要的朋友参考一下 java.util.ArrayList.contains()方法可用于检查Java ArrayList是否包含给定项。此方法具有单个参数,即测试了其在ArrayList中是否存在的项目。如果该项目在ArrayList中存在,则返回true;如果
所以我一辈子也想不出来。我正在尝试编写一个程序,提示用户输入电话号码。这将作为字符串输入,并在稍后的程序中转换为整数数组。然而,我现在遇到的情况是验证用户输入的字符串是否仅限于!!!包含2-9之间的数字。我已经尝试了。Contains方法和。Match方法,但是使用这些方法总是提供错误的结果。如果有人能提供一些关于如何解决这个问题,我将非常感谢。提前感谢。 以下是我目前掌握的信息:
问题内容: 我正在实现是否有位图,那么它应该将图像从imageview保存到内部存储器,否则在应用程序的内部存储器中设置另一个位图。这是代码:_ 问题答案: 您可以按以下方式检查它: 只需检查Bitmap值,如下所示: