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

Karate - Convert a Json array into another form

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

输入Json: (ReqCalculationInput.json)

 {
  "route_parameters": {
    "route_type": "Distance",
      "enc_hazards": [
        {
          "id": 0,
          "severity": 4
        },
        {
          "id": 1,
          "severity": 4
        },
        {
          "id": 2,
          "severity": 4
        }
      ]
    }
  }
}

输出数据:

{
  "route_parameters": {
    "route_type": "Distance",
      "enc_hazards": [
        {
            "id": 0,
            "severity": "Danger"
          },
          {
            "id": 1,
            "severity": "Danger"
          },
          {
            "id": 2,
            "severity": "Danger"
          }
      ]
    }
  }
}

如您所见,我需要将所有严重性值替换为“4”中的 '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)