解决Postman设置成集合变量以后取值为[object,Object]问题

在Postman中,当将MD5加密后的字符串设置为集合变量时,会出现取值显示为[object,Object]。解决方法是在加密后立即转换为字符串,如`var strmd5 = CryptoJS.MD5(str).toString();`。官方解释是全局变量内部会自动调用`toString()`,但集合变量不会。参考相关博客和文档可了解更多详情。" 114440454,10295884,四川麻将AI算法解析:最优拆牌策略,"['麻将算法', '游戏开发', 'Python编程', '策略游戏', '人工智能']

问题背景

// 6.把字符串str进行MD5加密,计算签名 
// MD5 hash the string
var strmd5 = CryptoJS.MD5(str)

// 7.把签名设置为集合变量
// sign Set the sign as collection variable
postman.setGlobalVariable("sign",strmd5);
pm.collectionVariables.set("sign", strmd5);

如上2个代码段,将某个字符串进行MD5加密以后,设置成全局变量,可以正常取到值

如果设置成集合变量,则不行,返回的结果是[object,Object]

试过联系postman官方和网上找了很多教程,没有解决,加了pm.collectionVariables.set("sign",JSON.stringify(strmd5));也无法解决

解决办法

在计算MD5的后面转成字符串

var strmd5 = CryptoJS.MD5(str).toString(); 即可正常取值

顺便问下各位大佬,为何设置成全局变量的时候不需要转换?而设置成集合变量,就必须转换?否则取到的似乎就是一个集合的值

-----------------------2022-05-02-----------------------------------------

收到了postman的官方答复,大概意思就是说当我们设置成全局变量的时候,不管你得到的值是什么都会在内部当作str 字符串处理,会默认调用 toString 这个函数,即使是布尔运算的真假都会当作文本来处理

Vaishnavi Challa (Postman)

Apr 27, 2022, 12:19 UTC

Hey Alen,
Thanks so much for your patience.
 
From the screenshot, it looks like you are using the legacy 'postman' object while setting the global variable.
That is, postman.setGlobalVariable("sign", strmd5);
Since the legacy object stores all the values passed as strings, it calls toString internally.
For example, boolean true/false will be stored as strings 'true'/ 'false' respectively.
And that is why it worked for you with Globals.
 
Whereas, the latest 'pm' object respects the type of the value passed. 
For example, the boolean nature of true/false will be retained.
 
Similar to pm.collectionVariables.set("variable_key", "variable_value") to set collection variable with pm object, you can use pm.globals.set("variable_key", "variable_value") to set global values with pm object.

 

参考文档:

使用 CryptoJS 中的 MD5 加密密码_ZCF1024的博客-CSDN博客_crypto-js md5        在项目中如果要对前后端传输的数据双向加密, 比如避免使用明文传输用户名,密码等数据。 就需要对前后端数据用同种方法进行加密,方便解密。这里介绍使用 CryptoJS 实现 AES 加解密。        首先需要下载前台使用 CryptoJS 实现 MD5 加解密的,所以要先下载组件,下载 CryptoJS-v3.1.2 版本之后,文件中包含components 和 rollu...https://blog.csdn.net/zcf980/article/details/83213286

【自动化测试】Postman工具,Tests中获取response返回值错误的问题,显示为[object Object]_海可以的博客-CSDN博客前言记录下学习自动化过程中,遇到的一些问题,也希望自己能够坚持下去,小海加油冲呀,第一篇博客,不好之处请多海涵,笔芯!一、问题出现背景自动化测试需要,要求编写test,获取postman的返回值中的user_token(特定的值),并赋值给环境变量Environment,为后续接口调用做铺垫二、问题现象之前也使用过将接口的返回值赋值给环境变量,当时因为返回的response类型为json类型,使用了下述语句,达到了目的var jsonData = JSON.parse(responseBody)https://blog.csdn.net/weixin_43911066/article/details/123482275

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值