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