将文本响应转换为 JSON 数组(邮递员)

Posted

技术标签:

【中文标题】将文本响应转换为 JSON 数组(邮递员)【英文标题】:Convert Text Response into JSON array (Postman) 【发布时间】:2022-01-18 03:58:30 【问题描述】:

我正在尝试将我在 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 数组中。

【问题讨论】:

好吧,您不能将直接文本转换为 JSON。我很惊讶JSON.stringify 还没有扔。您可以执行JSON.stringify(res.text().split("\n")) 之类的操作。那应该行得通。另外,你是在服务器端还是客户端?如果使用 fetch,则只能调用一次res.text() 【参考方案1】:

split 之后只需JSON.stringify,就可以解决您的问题。

let body = pm.response.text()
pm.environment.set('text2json', JSON.stringify(body.split("\r\n")));
console.log(body)

【讨论】:

【参考方案2】:
let response = pm.response.text().split('\n'), jsonObject = 
response.forEach((item,index)=>
    jsonObject[`uuid_$index`] = item
)

console.log(jsonObject)
pm.environment.set('text2json',jsonObject)

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

【讨论】:

以上是关于将文本响应转换为 JSON 数组(邮递员)的主要内容,如果未能解决你的问题,请参考以下文章

将表示 UCHAR 数组的 json 字符串响应转换为字节数组

在 Node.js 中响应 JSON 对象(将对象/数组转换为 JSON 字符串)

如何从邮递员获取 CSV 文件并在 NestJs 上转换为数组

将 XML 响应转换为 Json 时出错

swift:将传入的 json 数组转换为字典和对象

如何将改造 JSON 响应转换为列表?