如何在Apache Camel中为jsonpath编写一个exists predicate ?

hl0ma9xz  于 2022-11-07  发布在  Apache
关注(0)|答案(1)|浏览(150)

在我的Apache Camel应用程序中,我有多个条件来检查JSON中是否存在键。我想减少锅炉板代码,因此我需要将我的Expression转换为Predicate
我的代码与Expression s:

.choice()
    .when().jsonpath("$.score", true).to("direct:b")
    .when().jsonpath("$.points", true).to("direct:b")
    .otherwise().to("direct:c");

另请参阅:JSONPATH
我的代码与Predicate s:

.choice()
    .when(PredicateBuilder.or(jsonpath("$.score", true), jsonpath("$.points", true))).to("direct:b")
    .otherwise().to("direct:c");

另请参阅:PREDICATES
但这是行不通的,因为没有suppressExceptions参数(请参阅BuilderSupport#jsonpath)。不幸的是,也没有exists方法(请参阅ValueBuilder)。
如何编写一个Predicate来检查JSON中是否存在键?

k4aesqcs

k4aesqcs1#

这段代码解决了您问题。

.choice()
    .when(PredicateBuilder.and(jsonpath("$[?(@.score)]"), jsonpath("$.score"))).to("direct:b")
    .when(PredicateBuilder.and(jsonpath("$[?(@.points)]"), jsonpath("$.points"))).to("direct:b")
    .otherwise().to("direct:c");

相关问题