我需要检查REST调用的数据输出中是否存在条目。JSON输出如下所示:
{
"entity": {
"entries":[
{
"ID": "1",
"Pipeline": "Pipeline_1",
"State":"Completed"
}
],
"duration":1074,
"create_time":"2010-10-10"
}
}例如,我想检查是否缺少Pipeline_1,然后我希望管道打印出'Pipeline_1缺失‘,如果不是- null。我尝试使用三元(?)表达式:
!$Pipeline.contains ("Pipeline_1") ? "Pipeline_1 is missing" : null && !$Pipeline.contains ("Pipeline_2") ? "Pipeline_2 is missing" : null我在语法上遇到了问题,使用这个方法无法正确处理,因为它只处理第一个查询。
我也尝试过使用match方法,但也没有成功:
match $Pipeline {
$Pipeline!=("Pipeline_1") => 'Pipeline_1 is missing',
$Pipeline!=("Pipeline_2") => 'Pipeline_2 is missing',
_ => 'All of the pipelines have been executed successfully'
}我得检查一下是否有多种情况。关于如何嵌套条件表达式,有什么建议吗?提前谢谢你。
发布于 2019-12-08 06:19:45
假设您没有拆分数组$entity.entries[*]并按原样处理传入的文档,下面是一个可能的解决方案。
测试管道:

输入:
{
"entity": {
"entries": [
{
"ID": "1",
"Pipeline": "Pipeline_1",
"State": "Completed"
}
],
"duration": 1074,
"create_time": "2010-10-10"
}
}表达式:
{
"Pipeline_1": $entity.entries.reduce((a, c) => c.Pipeline == "Pipeline_1" || a, false),
"Pipeline_2": $entity.entries.reduce((a, c) => c.Pipeline == "Pipeline_2" || a, false)
}.values().reduce((a, c) => c && a, true) ? "All pipelines executed successfully" : "Pipeline(s) missing"输出:

如果不希望在单个表达式中执行该操作,则可以使用条件快照,如下所示。

下面是条件快照的输出。

然后你可以随意处理。
https://stackoverflow.com/questions/59227444
复制相似问题