【问题标题】:Postman Visualisation and iterating with HandlebarsPostman 可视化和使用 Handlebars 进行迭代
【发布时间】:2021-04-27 18:21:17
【问题描述】:

我正在运行 Postman,我想使用可视化工具将 JSON 响应转换为一组表。本质上,响应在其“内容”属性中包含一组对象。我想遍历该数组,并为每个对象生成一个属性名称、值行的表。

假设我有这样的结果:

{
    "content": [
        {
            "Study Number": "X123",
            "Primary Completion Date Planned": "2018-11-09",
            "Primary Completion Date Actual": null,
            "Favourite Colours": [
                "Blue"
            ]
        }
    ],
    "last": true,
    "totalElements": 1,
    "totalPages": 1,
    "first": true,
    "sort": {
        "sorted": false,
        "unsorted": true,
        "empty": true
    },
    "size": 100,
    "number": 0,
    "numberOfElements": 1,
    "empty": false
}

我可以对其进行迭代以获得这样的可行结果,只是内容的第一个元素:

var template = `<table bgcolor="#FFFFFF">
        <tr>
            <th>Prop</th>
            <th>Val</th>
        </tr>
        {{#each response}}
            <tr>
                <td>{{key}}</td>
                <td>{{val}}</td>
            </tr>
        {{/each}}
    </table>`;

const response = pm.response.json();
data = { 'response' : [] };

for (var prop in response.content[0]){
  if (response.content[0].hasOwnProperty(prop)){
    data['response'].push({ 'key' : prop, 'val' : response.content[0][prop] });
  }
}

// Set visualizer
pm.visualizer.set(template, data);

如何迭代“内容”中的多个元素?我尝试在每个循环中使用“#this”进行迭代,但我似乎无法找出正确的语法。

【问题讨论】:

  • 这篇文章有帮助吗:stackoverflow.com/a/44095020/3397771 ?
  • 嗯...不确定。问题是,我事先不知道属性名称或属性计数。而且,可悲的是,进一步阅读,这是 O.P. 的反对意见
  • 我不明白您为什么要构建 data.response 数组以发送到模板。您可以直接将pm.response 发送到您的模板并将循环(迭代)留给模板吗?
  • 如果您能告诉我该怎么做,我将不胜感激。 :-)
  • 我的两个问题 - 事先不知道属性名称,以及遍历对象数组。 JS 解决了第 1 项,因为我显然只想查看本地属性,并且通过将它们转换为 'prop' 和 'val' 我可以构建一个模板。我看不到如何在 Handlebars 中构建动态模板 :-(

标签: json templates iteration postman handlebars.js


【解决方案1】:

经过一番折腾,下面是工作代码:

var template = `
{{#each content}}
    <table bgcolor="#FFFFFF">
        <tr>
            <th>Property</th>
            <th>Value</th>
        </tr>
        {{#each this}}
        <tr>
            <td>{{@key}}</td>
            <td>{{.}}</td>
        </tr>
        {{/each}}
    </table>
{{/each}}`;

const response = pm.response.json();

// Set visualizer
pm.visualizer.set(template, response);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 2013-07-28
    • 2013-06-27
    相关资源
    最近更新 更多