0

我需要检查 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'
}

我必须检查多个条件。关于如何嵌套条件表达式的任何建议?先感谢您。

4

1 回答 1

1

假设您没有拆分数组$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"

输出:

在此处输入图像描述


如果您不想在单个表达式中执行此操作,则可以使用Conditional snap ,如下所示。

在此处输入图像描述

以下是条件快照的输出。

在此处输入图像描述

然后你可以随意处理它。

于 2019-12-08T06:19:45.847 回答