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