验证某些键的值是否在有效负载中

问题描述 投票:0回答:1

我有这个输入:

[
  {
    "building": 222,
    "default": {
      "money": 0.22,
      "perHour": null
    },
    "appPricing": [
      {
        "pricing": {
          "money": 1.25,
          "perHour": null
        },
        "schedules": [
          {
            "daysOfWeek": [
              "FRIDAY",
              "MONDAY"
            ],
            "end": "21:59:00",
            "start": "08:00:00"
          },
          {
            "days": [
              "TUESDAY",
              "WEDNESDAY",
              "THURSDAY"
            ],
            "end": "15:59:00",
            "start": "11:00:00"
          }
        ]
      }
    ]
  }
]

我想在特定日期、特定结束时间和开始时间之后进行过滤。 这是输出:

{ 
  "money": 0.22, 
  "perMinute": null, 
  "perSession": null
} 

谢谢,我想在特定日期、特定结束时间和开始时间之后进行过滤。

dataweave
1个回答
0
投票

我假设您正在尝试根据时间表过滤定价,并在找不到定价的情况下返回默认定价。关键是内部过滤器返回布尔条件,我使用

isEmpty
!
运算符来实现相同的效果。

但是,我发现输出与输入存在差异。例如,输出中的 perMinute 和 perSession 字段。因此,请使用以下脚本作为起点,并根据您的要求扩展/修改脚本。

希望这有帮助!

%dw 2.0
output application/json
var inp = {
    day: "THURSDAY",
    endTime: "16:59:00",
    startTime: "11:00:00"
}

fun matchSchedules (schedules) = 
    !isEmpty (schedules filter (($.daysOfWeek contains inp.day)
                    and $.endTime == inp.endTime
                    and $.startTime == inp.startTime))
---
((payload[0].appPricing filter ((price) -> matchSchedules(price.schedules)))[0].pricing) default payload[0]."default"
© www.soinside.com 2019 - 2024. All rights reserved.