提问人:Chethan Swaroop 提问时间:1/15/2022 更新时间:1/15/2022 访问量:1380
在空手道中使用 jsonPath 将值设置为 json
Setting a value into a json using jsonPath in karate
问:
我将下面的 Json 文件(Test.json)读入空手道中的变量
TestInput.json:
{
"firstName": "John",
"lastName" : "doe",
"age" : 26,
"address" : {
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
},
"phoneNumbers": [
{
"type" : "Mobile",
"number": "0123-4567-8888"
},
{
"type" : "home",
"number": "0123-4567-8910"
}
]
}
我打算更改我的空手道代码中手机号码的值,并使用 Json 作为我的请求,并带有以下行
空手道代码:
* def reqJson = read('TestInput.json')
* karate.set('reqJson','$.phoneNumbers[?(@.type=="Mobile")].number',"999999999")
Then print reqJson
print 语句的输出没有使用 Mobile 的数字更新 json。
或者,我也使用以下行来设置变量,但这也没有用:
* set reqJson.phoneNumbers[?(@.type=="Mobile")].number = "99999999"
这可以通过空手道实现吗?如果是,有人可以指出我出错的地方或实现我的场景的替代方法。
谢谢。
答:
1赞
Peter Thomas
1/15/2022
#1
不能使用 JsonPath 进行更改。直接访问路径或使用操作:https://github.com/karatelabs/karate#json-transformsmap()
这只是一个示例,假设 JSON 位于名为 的变量中。花一些时间来适应 JSON 转换。body
* body.phoneNumbers = body.phoneNumbers.map(x => { x.number = '999'; return x })
评论