我以JSON的形式从Postman中的请求中返回了一些响应体数据。
示例:
{
"targets": {
"@uri": "/api/space/tag-management/tags/98304/targets",
"target": [
{
"@type": "vnd.net.juniper.space.device-management.device",
"@uri": "/api/space/tag-management/tags/98304/targets/98328",
"@href": "/api/space/device-management/devices/196657"
},
{
"@type": "vnd.net.juniper.space.device-management.device",
"@uri": "/api/space/tag-management/tags/98304/targets/98329",
"@href": "/api/space/device-management/devices/196656"
},
{
"@type": "vnd.net.juniper.space.device-management.device",
"@uri": "/api/space/tag-management/tags/98304/targets/98330",
"@href": "/api/space/device-management/devices/196655"我一直试图从这些数据中获取设备ID。每个街区都是一个装置。在@href的末尾,数字值是设备ID - /devices/196655。
我环顾四周,但不太明白这一点,无法解决我的问题。
我试过这段代码:
var jsonData = pm.response.json();
var results = [];
for (var i = 0; i < jsonData.targets.target.length; i++) {
var counter = jsonData.targets.target[i]['@href'].split(‘/‘);
results.push(counter[counter.length - 1]);
}
pm.environment.set("DeviceID", results.join(‘,’));更新:
我已经找到了一种使用lodash的解决方案,但是我很难在postman中调用这个变量。可能是客户端使用的问题(我的错),而不是代码方面的问题。
这是我能解决这个问题的代码。
let body = pm.response.json().targets.target,
ids = _.map(body, (id) => id['@href'].split("/")[5]);
pm.globals.set("DeviceID", ids) 在此之后,它将我的数据放入一个全局变量中,正如我所需要的那样。

编辑:这是我遇到的新问题。在下一个请求的正文中,邮递员似乎无法识别我的{{DeviceID}}变量调用。

发布于 2019-11-16 23:12:37
在您的第2行中,您正在尝试解析json,但是第一行将响应设置为json,因此行到是不必要的。
如果您使用您的第一个代码块,但删除第2行,并让您的for循环使用响应,它应该可以工作。
var jsonData = pm.response.json();
var results = [];
for (var i = 0; i < jsonData.targets.target.length; i++) {
var counter = jsonData.targets.target[i][“@href”].split(‘/‘);
results.push(counter[counter.length - 1]);
}
// use me
// results.join(‘,’);发布于 2019-11-19 16:50:17
这是解决我问题的代码。
let body = pm.response.json().targets.target,
ids = _.map(body, (id) => id['@href'].split("/")[5]);
pm.globals.set("DeviceID", ids) 另一个问题是它没有在我的体内填充全局变量,发现我有一个同名的环境变量和全局变量。
删除了Env var并解决了问题。
https://stackoverflow.com/questions/58896047
复制相似问题