首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析邮递员中的JSON数组

解析邮递员中的JSON数组
EN

Stack Overflow用户
提问于 2019-11-16 23:05:17
回答 2查看 3.3K关注 0票数 0

我以JSON的形式从Postman中的请求中返回了一些响应体数据。

示例:

代码语言:javascript
复制
{
    "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

我环顾四周,但不太明白这一点,无法解决我的问题。

我试过这段代码:

代码语言:javascript
复制
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中调用这个变量。可能是客户端使用的问题(我的错),而不是代码方面的问题。

这是我能解决这个问题的代码。

代码语言:javascript
复制
let body = pm.response.json().targets.target,
    ids = _.map(body, (id) => id['@href'].split("/")[5]);

pm.globals.set("DeviceID", ids) 

在此之后,它将我的数据放入一个全局变量中,正如我所需要的那样。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-16 23:12:37

在您的第2行中,您正在尝试解析json,但是第一行将响应设置为json,因此行到是不必要的。

如果您使用您的第一个代码块,但删除第2行,并让您的for循环使用响应,它应该可以工作。

代码语言:javascript
复制
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(‘,’);
票数 0
EN

Stack Overflow用户

发布于 2019-11-19 16:50:17

这是解决我问题的代码。

代码语言:javascript
复制
let body = pm.response.json().targets.target,
    ids = _.map(body, (id) => id['@href'].split("/")[5]);

pm.globals.set("DeviceID", ids) 

另一个问题是它没有在我的体内填充全局变量,发现我有一个同名的环境变量和全局变量。

删除了Env var并解决了问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58896047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档