如何在空手道中动态删除 json 键?

How to dynamically remove json key in Karate?

我正在尝试根据条件删除一些 json 密钥。以下无效

 * def body
 * if (condition == 'true') remove body.path1.path2.key
(or)
 * def body = (condition == 'true')? (remove  body.path1.path2.key):body

我也不确定为什么下面的代码会出错

* def json = { a: 1,b:2 }
* def key = 'b'
* karate.remove('json', key)

错误: 评估(js)失败:karate.remove('json',关键),java.lang.RuntimeException:意外路径:b

这将起作用:

* def json = { a: 1, b: 2 }
* def key = 'b'
* if (true) karate.remove('json', key)
* match json == { a: 1 }

所以 remove 是一个空手道关键字,所以它在与 JS 混合时不起作用。

但是1.0以后的JS引擎会支持JS delete关键字。所以你现在可以做这样的事情了:

* def json = { a: 1, b: 2 }
* def key = 'b'
* if (true) delete json[key]
* match json == { a: 1 }