将文本响应转换为 JSON 数组(邮递员)
Convert Text Response into JSON array (Postman)
我正在尝试将我在 POSTMAN 中获得的文本响应转换为 JSON 数组并寻求任何帮助。现在,我可以使用 .split()
从文本响应创建变量,如下所示:
回复:
1. 1c522d76-5d20-11ec-bf63-0242ac130002↵
2. 1c522fc4-5d20-11ec-bf63-0242ac130002↵
3. 1c5230d2-5d20-11ec-bf63-0242ac130002↵
4. 1c5231c2-5d20-11ec-bf63-0242ac130002↵
5. 1c5232a8-5d20-11ec-bf63-0242ac130002↵
通过拆分文本响应设置集合变量(每个UUID是一个变量)
pm.collectionVariables.set("UUID_1", res.text().split("\r\n")[0])
pm.collectionVariables.set("UUID_2", res.text().split("\r\n")[1])
pm.collectionVariables.set("UUID_3", res.text().split("\r\n")[2])
pm.collectionVariables.set("UUID_4", res.text().split("\r\n")[3])
pm.collectionVariables.set("UUID_5", res.text().split("\r\n")[4])
但是,与其以这种方式创建变量,我认为更好的办法是将文本响应转换为 JSON 数组。这样我就可以朝着循环 API 请求的目标努力,直到 JSON 数组完成。
到目前为止,我有这个:这是通过字符串化来设置一个环境变量,这几乎是在创建一个字符串,但我认为它是将整个文本响应串成一个字符串。
let body = pm.response.text()
pm.environment.set('text2json', JSON.stringify(body));
console.log(body)
您会注意到它是如何用双引号引起来的:
""1c522d76-5d20-11ec-bf63-0242ac130002\r\n1c522fc4-5d20-11ec-bf63-0242ac130002\r\n1c5230d2-5d20-11ec-bf63-0242ac130002\r\n1c5231c2-5d20-11ec-bf63-0242ac130002\r\n1c5232a8-5d20-11ec-bf63-0242ac130002""
不幸的是,如果我尝试获取 Env 变量并像这样在控制台记录它,则会出现错误:
console.log(pm.environment.get("text2json"))
错误:
JSONError: Unexpected token 'c' at 1:21c522d76-5d20-11ec-bf63-0242ac130002
正在寻找一种方法来完成这项工作并将其放入 JSON 数组。
在split
之后JSON.stringify
就解决了你的问题。
let body = pm.response.text()
pm.environment.set('text2json', JSON.stringify(body.split("\r\n")));
console.log(body)
let response = pm.response.text().split('\n'), jsonObject = {}
response.forEach((item,index)=>{
jsonObject[`uuid_${index}`] = item
})
console.log(jsonObject)
pm.environment.set('text2json',jsonObject)
只需将其添加到数组中并遍历每个元素并将其添加到对象中
我正在尝试将我在 POSTMAN 中获得的文本响应转换为 JSON 数组并寻求任何帮助。现在,我可以使用 .split()
从文本响应创建变量,如下所示:
回复:
1. 1c522d76-5d20-11ec-bf63-0242ac130002↵
2. 1c522fc4-5d20-11ec-bf63-0242ac130002↵
3. 1c5230d2-5d20-11ec-bf63-0242ac130002↵
4. 1c5231c2-5d20-11ec-bf63-0242ac130002↵
5. 1c5232a8-5d20-11ec-bf63-0242ac130002↵
通过拆分文本响应设置集合变量(每个UUID是一个变量)
pm.collectionVariables.set("UUID_1", res.text().split("\r\n")[0])
pm.collectionVariables.set("UUID_2", res.text().split("\r\n")[1])
pm.collectionVariables.set("UUID_3", res.text().split("\r\n")[2])
pm.collectionVariables.set("UUID_4", res.text().split("\r\n")[3])
pm.collectionVariables.set("UUID_5", res.text().split("\r\n")[4])
但是,与其以这种方式创建变量,我认为更好的办法是将文本响应转换为 JSON 数组。这样我就可以朝着循环 API 请求的目标努力,直到 JSON 数组完成。
到目前为止,我有这个:这是通过字符串化来设置一个环境变量,这几乎是在创建一个字符串,但我认为它是将整个文本响应串成一个字符串。
let body = pm.response.text()
pm.environment.set('text2json', JSON.stringify(body));
console.log(body)
您会注意到它是如何用双引号引起来的:
""1c522d76-5d20-11ec-bf63-0242ac130002\r\n1c522fc4-5d20-11ec-bf63-0242ac130002\r\n1c5230d2-5d20-11ec-bf63-0242ac130002\r\n1c5231c2-5d20-11ec-bf63-0242ac130002\r\n1c5232a8-5d20-11ec-bf63-0242ac130002""
不幸的是,如果我尝试获取 Env 变量并像这样在控制台记录它,则会出现错误:
console.log(pm.environment.get("text2json"))
错误:
JSONError: Unexpected token 'c' at 1:21c522d76-5d20-11ec-bf63-0242ac130002
正在寻找一种方法来完成这项工作并将其放入 JSON 数组。
在split
之后JSON.stringify
就解决了你的问题。
let body = pm.response.text()
pm.environment.set('text2json', JSON.stringify(body.split("\r\n")));
console.log(body)
let response = pm.response.text().split('\n'), jsonObject = {}
response.forEach((item,index)=>{
jsonObject[`uuid_${index}`] = item
})
console.log(jsonObject)
pm.environment.set('text2json',jsonObject)
只需将其添加到数组中并遍历每个元素并将其添加到对象中