是否可以在 JavaScript 函数中使用 JsonPath 之类的 smth 来浏览 json?
Is it possible to use smth like JsonPath in JavaScript functions to navigate through json?
这是我的测试:
Background:
* url serverUrl
* configure headers = read('classpath:headers.js')
* def getId = function(){ return java.util.UUID.randomUUID() + '' }
Scenario: Create lead
* def req = read('classpath:data/leads.json')
* def fun = function(x, i){ x.id = getId(); return x }
* def updated = karate.map(req.updated, fun)
* def deleted = karate.map(req.deleted, fun)
Given path '/leads'
And request req
When method post
Then status 200
And match $..updated.length() == [3]
是否可以用某种方式替换这些行
* def fun = function(x, i){ x.id = getId(); return x }
* def updated = karate.map(req.updated, fun)
* def deleted = karate.map(req.deleted, fun)
喜欢
* def fun = function(x, i){ $x..id = getId(); return x }
* def req = karate.map(req, fun)
我们有 smth 可以通过 json 在 JS 函数中轻松导航吗?
没有。 JsonPath 在 JavaScript 中不起作用。您可能需要使用 karate.map()
进行第二次转换。对于只读 JsonPath,您可以使用 karate.jsonPath()
- 但抱歉,这样的更新是不可能的。
更多信息请参考其他答案:
这是我的测试:
Background:
* url serverUrl
* configure headers = read('classpath:headers.js')
* def getId = function(){ return java.util.UUID.randomUUID() + '' }
Scenario: Create lead
* def req = read('classpath:data/leads.json')
* def fun = function(x, i){ x.id = getId(); return x }
* def updated = karate.map(req.updated, fun)
* def deleted = karate.map(req.deleted, fun)
Given path '/leads'
And request req
When method post
Then status 200
And match $..updated.length() == [3]
是否可以用某种方式替换这些行
* def fun = function(x, i){ x.id = getId(); return x }
* def updated = karate.map(req.updated, fun)
* def deleted = karate.map(req.deleted, fun)
喜欢
* def fun = function(x, i){ $x..id = getId(); return x }
* def req = karate.map(req, fun)
我们有 smth 可以通过 json 在 JS 函数中轻松导航吗?
没有。 JsonPath 在 JavaScript 中不起作用。您可能需要使用 karate.map()
进行第二次转换。对于只读 JsonPath,您可以使用 karate.jsonPath()
- 但抱歉,这样的更新是不可能的。
更多信息请参考其他答案: