Karate 空手道:从JSON中删除动态元素

Karate 空手道:从JSON中删除动态元素,karate,Karate,我还有一个要求,这与我以前的职位有关 * def res1 = {"member":{"muid":"MBR1"},"part":[{"PID":"M123"},{"supportedMembers":[{"muid":"MBR3","status":{"code":"A"}},{"muid":"MBR2","status":{"code":"I"}}]}]} * def res2 = {"members":[{"member":{"muid":"MBR2","test":[{"EID":"E

我还有一个要求,这与我以前的职位有关

* def res1 = {"member":{"muid":"MBR1"},"part":[{"PID":"M123"},{"supportedMembers":[{"muid":"MBR3","status":{"code":"A"}},{"muid":"MBR2","status":{"code":"I"}}]}]}

* def res2 = {"members":[{"member":{"muid":"MBR2","test":[{"EID":"E123"}]}},{"member":{"muid":"MBR3","test":[{"EID":"E123"}]}}]}
我想从res2响应中删除
id
,它可以是
res2.members.member
中的任何位置,并与res1进行匹配以查看muid的存在 我尝试了下面的方法,但不起作用:

* def id = res1.member.muid

示例代码:

* karate.remove('$res2.members[*]..muid','$.muid[id]') 

另一个精彩的回答,谢谢你!对于提出这个问题的@JCK,我敦促你重新阅读这个答案:-请不要有这种“过于聪明”的测试,保持简单。做这类工作的团队在以后的维护工作中会遇到困难。我不会再说了——这取决于你是否接受我的建议。谢谢你,尼奥道恩。谢谢彼得·托马斯@Peter,但我不能这样做,
*复制last=child.array1*删除last[0]
,因为情况并非总是如此。我只想删除父对象中存在的成员api@JCK我想你还不明白我想告诉你什么。顺便说一下,您不能使用JsonPath
删除
(不允许
*
Feature: Validation

Scenario:

    * def res1 = {"member":{"muid":"MBR1"},"part":[{"PID":"M123"},{"supportedMembers":[{"muid":"MBR3","status":{"code":"A"}},{"muid":"MBR2","status":{"code":"I"}}]}]}
    * def res2 = {"members":[{"member":{"muid":"MBR2","test":[{"EID":"E123"}]}},{"member":{"muid":"MBR3","test":[{"EID":"E123"}]}}]}
    * def id = res1.member.muid
    * def res2ids = $res2.members[*]..muid
    * def data2 = karate.mapWithKey(res2ids, 'muid')
    * print data2
    * def res2ids = karate.jsonPath(data2, "$[?(@.muid != '" + id+ "')]")
    * def res2ids = $res2ids[*]..muid
    * print res2ids
    * match res1.part[1].supportedMembers[*].muid contains only res2ids