在空手道中使用 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
打印语句的输出没有 json 更新为手机号码。
或者,我也使用下面的行来设置变量,但这也没有用:
* set reqJson.phoneNumbers[?(@.type=="Mobile")].number = "99999999"
这可以通过空手道实现吗?如果是,有人可以指出我出错的地方或实现我的场景的替代方法。
谢谢。
您不能使用 JsonPath 进行变异。直接访问路径或使用map()
操作:https://github.com/karatelabs/karate#json-transforms
这只是一个例子,假设 JSON 在一个名为 body
的变量中。花点时间习惯 JSON 转换。
* body.phoneNumbers = body.phoneNumbers.map(x => { x.number = '999'; return x })
我将以下 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
打印语句的输出没有 json 更新为手机号码。
或者,我也使用下面的行来设置变量,但这也没有用:
* set reqJson.phoneNumbers[?(@.type=="Mobile")].number = "99999999"
这可以通过空手道实现吗?如果是,有人可以指出我出错的地方或实现我的场景的替代方法。
谢谢。
您不能使用 JsonPath 进行变异。直接访问路径或使用map()
操作:https://github.com/karatelabs/karate#json-transforms
这只是一个例子,假设 JSON 在一个名为 body
的变量中。花点时间习惯 JSON 转换。
* body.phoneNumbers = body.phoneNumbers.map(x => { x.number = '999'; return x })