Karate 空手道比赛包含深度训练,但并不像你们所期望的那样有效

Karate 空手道比赛包含深度训练,但并不像你们所期望的那样有效,karate,Karate,我们来自这里: 正如它所说: 这会修改match contains的行为,以便处理嵌套列表或对象以进行“deep contains”匹配,…,您只需要检查数据的各种“树”中的某些值 所以让我们试着玩一玩,找到一些{e:5}在树的深处,当original={a:1,b:2,c:3,d:{a:1,b:2,e:5} Feature: Match contains deep # match contains deep test (works ok, but this is not "dee

我们来自这里:

正如它所说:

这会修改match contains的行为,以便处理嵌套列表或对象以进行“deep contains”匹配,…,您只需要检查数据的各种“树”中的某些值

所以让我们试着玩一玩,找到一些{e:5}在树的深处,当
original={a:1,b:2,c:3,d:{a:1,b:2,e:5}

Feature: Match contains deep

 # match contains deep test (works ok, but this is not "deep" by any stretch of imagination, this is guiding the whole path in the search)
 Scenario: match contains deep test modified original
   * def original = { a: 1, b: 2, c: 3, d: { a: 1, b: 2, e: 5 } }
   * def expected = { d: { e: 5 } }
   * match original contains deep expected

 #Thats was not deep, this is deep (fails, and this is what anyone would understand by "deep")
 Scenario: match contains deep
   * def original = { a: 1, b: 2, c: 3, d: { a: 1, b: 2, e: 5 } }
   * def expected = { e: 5 }
   * match original contains deep expected

 #So you dont need deep (fails)
 Scenario: match contains test modified original without deep
   * def original = { a: 1, b: 2, c: 3, d: { a: 1, b: 2, e: 5 } }
   * def expected = { d: { e: 5 } }
   * match original contains expected

 #So maybe it works with any (fails)
 Scenario: match contains test modified original
   * def original = { a: 1, b: 2, c: 3, d: { a: 1, b: 2, e: 5 } }
   * def expected = { e: 5 }
   * match original contains any expected

 #Maybe I'm tripping with syntax (fails)
 Scenario: match contains deep test my test #2
   * def original = { a: 1, b: 2, c: 3, d: { a: 1, b: 2, e: 5 } }
   * def expected = e: 5
   * match original contains deep expected

 #So maybe I'm tripping with syntax and semantics, and its any (fails)
 Scenario: match contains deep test my test #2
   * def original = { a: 1, b: 2, c: 3, d: { a: 1, b: 2, e: 5 } }
   * def expected = e: 5
   * match original contains any expected
 
因此,要么我没有真正得到它,要么它没有像人们期望的那样工作,也就是说,我想检查树中任何位置的现有键值对


如果有人能给它一些光,那就太好了。正如我所看到的,@PeterThomas正在回答大多数与空手道有关的问题,我想感谢他为把这个工具交给社区所做的巨大努力。

作为这个工具的创造者,这就是我对“深度”的定义,所以我想你必须处理它;)顺便说一句,你是第一个发现它有误导性的人——而且在我诚实的观点中,它确实按照你期望的方式工作。您有JSON的“子集”——但您仍然希望“修复”路径。这正是大多数人想要的,因为当你处理JSON时,你永远不会想要像某些值跳转并出现在其他地方这样的“惊喜”

也就是说,您似乎在寻找的是JsonPath:

* def original = { a: 1, b: 2, c: 3, d: { a: 1, b: 2, e: 5 } }
* match original..* contains deep { e: 5 }
我把它作为一个练习留给你去弄清楚它是如何工作的。但请随意询问提示:P