Karate 空手道-将Json数组转换为另一种形式

Karate 空手道-将Json数组转换为另一种形式,karate,Karate,我有以下数据,我需要修改其中的一些值,以便在空手道中进行进一步处理 输入Json:(ReqCalculationInput.Json) 输出数据: { "route_parameters": { "route_type": "Distance", "enc_hazards": [ { "id": 0, &quo

我有以下数据,我需要修改其中的一些值,以便在空手道中进行进一步处理

输入Json:(ReqCalculationInput.Json)

输出数据:

{
  "route_parameters": {
    "route_type": "Distance",
      "enc_hazards": [
        {
            "id": 0,
            "severity": "Danger"
          },
          {
            "id": 1,
            "severity": "Danger"
          },
          {
            "id": 2,
            "severity": "Danger"
          }
      ]
    }
  }
}
        * def requestBodyJson = read('classpath:data/routing/ReqCalculationInput.json')
        * def fun = function(x){ return {if (x.severity === 4) {x.severity: "Danger"}}}
        * def formattedInput = karate.map(requestBodyJson.route_parameters.enc_hazards, fun)
        * print formattedInput
如您所见,我需要将所有严重性值替换为“4”中的“危险”

到目前为止我的代码:

{
  "route_parameters": {
    "route_type": "Distance",
      "enc_hazards": [
        {
            "id": 0,
            "severity": "Danger"
          },
          {
            "id": 1,
            "severity": "Danger"
          },
          {
            "id": 2,
            "severity": "Danger"
          }
      ]
    }
  }
}
        * def requestBodyJson = read('classpath:data/routing/ReqCalculationInput.json')
        * def fun = function(x){ return {if (x.severity === 4) {x.severity: "Danger"}}}
        * def formattedInput = karate.map(requestBodyJson.route_parameters.enc_hazards, fun)
        * print formattedInput

有没有达到同样效果的提示?

只是为了好玩,我会给你一个空手道1.X版的一行

* data.route_parameters.enc_hazards = data.route_parameters.enc_hazards.map(x => x.severity == 4 ? {id: x.id, severity: 'Danger' } : x)
下面是一个更容易理解的版本:

* def fun = function(x){ return x.severity == 4 ? {id: x.id, severity: 'Danger' } : x }
* data.route_parameters.enc_hazards = karate.map(data.route_parameters.enc_hazards, fun)

有很多选择。下次请用更简单的答案问一个更简单的问题example@PeterThomas将问题编辑成更简单的版本。