【发布时间】:2020-06-03 07:34:28
【问题描述】:
我试图理解为什么这不起作用?
context.addPropertyAccessor(new JsonPropertyAccessor());
Object j = mapper.readTree(
"{\"foo\": {\"bar\": [ { \"fizz\": 5, \"buzz\": 6, \"doo\": 9 }, {\"fizz\": 7}, {\"fizz\": 8} ] } })");
System.out.println(evaluate(j, "foo.bar.![doo == 9]"));
它总是打印:
[false, false, false]
我需要检查是否有任何 doo 包含 9。
【问题讨论】:
-
evaluate是什么方法? -
foo.bar[?(@.doo==9)]为您提供所有具有doo==9的bars。如果您只需要真或假,那么foo.bar[?(@.doo)].doo==9 -
private static Object evaluate(Object target, String expression) { return parser.parseExpression(expression).getValue(context, target); }
-
上面的表达式给了我一个异常。线程“main”中的异常 org.springframework.expression.spel.SpelParseException: Expression [foo.bar[?(@.doo==9)]] @ 10:EL1059E:@或&后面只能跟标识符或带引号的名称
-
我以为你在使用 jsonPath docs.spring.io/spring-integration/reference/html/…