邮递员脚本:如何引用带有网址的 json 节点作为名称

Posted

技术标签:

【中文标题】邮递员脚本:如何引用带有网址的 json 节点作为名称【英文标题】:Postman scripting: how to refrence a json node with web address for a name 【发布时间】:2021-06-10 09:58:54 【问题描述】:

我目前正在使用不记名令牌,我需要从中获取一些数据以继续用户旅程。我发现以下代码为我进行解码

var jsonData = JSON.parse(responseBody);
const payload = jsonData.Result.AccessToken.split('.')[1];  // Assuming the JWT is in id_token
const parsed = JSON.parse(atob(payload));

它使用 atob 沙盒脚本来解码 base 64 编码的 payload,解码后的 payload 看起来有点像这样:


  "http://mytestsite.uk/roles": [
    "user"
  ],
  "http://mytestsite.uk/id": "8d2c3de9-4fa2-a58e-68109d977",
  "http://mytestsite.uk/email": "tst3@mytestsite.uk",
  "sub": "500b416c8942bb0069b98a3c",
  "aud": "api.tst.mytestsite.uk",
  "iat": 1615544685,
  "exp": 1615631085

通常,我会像这样引用我想要的有效负载主体项(例如 sub):

pm.environment.set('sub', parsed.sub); 

但是,我想引用“http://mytestsite.uk/id”,不知道该怎么做。

parsed.http://mytestsite.uk/id

以上导致脚本出错,我无法对其进行编码,因为这不会删除点,我显然不能将它作为字符串传递 - 我想我不清楚如何正确传递这个正确引用 JSON 对象的名称。

【问题讨论】:

【参考方案1】:

你应该可以这样引用它:

pm.environment.set('id', parsed['http://mytestsite.uk/id'])

【讨论】:

以上是关于邮递员脚本:如何引用带有网址的 json 节点作为名称的主要内容,如果未能解决你的问题,请参考以下文章

如何修复我的代码以使其发送 json 数据作为对邮递员 GET 请求的响应?

如何使用 Nodejs 上传带有 json 的图像

邮递员脚本:如何解码令牌

关于带有编码图像的帖子图像的json邮递员问题

如何使用节点 js 控制台拒绝邮递员中的解析消息

为啥 JsonDecoder 在尝试解析邮递员网址但处理其他网址时出现错误?