将文本响应转换为 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)

只需将其添加到数组中并遍历每个元素并将其添加到对象中