解析 JSON Postman 响应

Posted

技术标签:

【中文标题】解析 JSON Postman 响应【英文标题】:Parse JSON Postman response 【发布时间】:2018-12-04 03:27:40 【问题描述】:

我在 Postman 中进行了一个测试,在那里我执行了一个 post 请求并需要解析 json 响应

响应如下所示:

"aPIProxy" : [ 
    "name" : "SFDC-UpdateLoginTime-v1",
    "revision" : [ 
      "configuration" : 
        "basePath" : "/",
        "steps" : [ ]
      ,
      "name" : "1",...some attributes]

我需要得到类似的东西:

"name" : "SFDC-UpdateLoginTime-v1"
"name" : "1"

对于多次出现的 json 文件。

【问题讨论】:

格式正确后需要做什么?将其存储为变量还是仅将其记录到控制台?看看 lodash 的 _. map() 函数,得到你需要的东西 - lodash.com/docs/#map 【参考方案1】:

您应该首先使用JSON.parse 解析响应,然后您可以像这样迭代解析的对象:

var resObj = JSON.parse(pm.response.text())
for(var i=0; i< resObj.length; i++) 
    console.log("name: "+ resObj[i].name);

【讨论】:

【参考方案2】:

您可以使用 Lodash 的 _.map() 函数捕获多个“名称”属性,该函数是在本机应用程序上构建的 it 模块。我不得不稍微修改您需要的内容,因为 name 键会重复。

const result = _.map(pm.response.json().aPIProxy, data => (
  name: data.name,
  revisionName: data.revision[0].name
))

pm.environment.set("response", JSON.stringify(result))

然后,这会将所有值存储在一个环境变量中,供您在另一个请求的其他地方使用。

【讨论】:

【参考方案3】:

以下邮递员脚本可能会对您有所帮助。

var jsonData = JSON.parse(responseBody);
var jsonNamesData = jsonData.aPIProxy;
console.log(jsonNamesData);
var parsedData = "";
for(var i=0;i<jsonNamesData.length;i++)
    parsedData = parsedData +"\"name\" : \"" +jsonNamesData[i].name+"\", ";
    console.log("\"name\" : \"" +jsonNamesData[i].name+"\"");

console.log(parsedData);
postman.setEnvironmentVariable("parsedNamesResponse", parsedData); // updating parsed data to the environment variable parsedNamesResponse

【讨论】:

以上是关于解析 JSON Postman 响应的主要内容,如果未能解决你的问题,请参考以下文章

测试 Postman 响应体 Json 是数组还是对象

如何在 Postman、GET request Express 中显示 JSON 响应?

将 Postman 中的 API 响应保存到文件中

Gson+GsonFormat+Postman简单粗暴解析json

postman常用断言

c# JSON REST 响应通过 3 种不同的方法(WebRequest、RESTSharp、HttpClient)是空的,但 Postman 和浏览器可以工作