使用Jade循环使用JSON中的特定键

时间:2014-09-24 18:27:23

标签: javascript json node.js pug

我正在使用node.js并使用Jade作为模板引擎。 我收到了来自API的JSON响应。

相当标准。 这就是它的样子:

Rows: 
{ Row: 
  [ { Header: 
       { ColData: 
          [ { value: 'GS & CO' },
            { value: '' },
            { value: '' },
            { value: '' },
            { value: '' },
            { value: '' },
            { value: '' } ] },
      Rows: 
       { Row: 
          [ { ColData: 
               [ { value: '01/31/2014' },
                 { value: 'Bill' },
                 { value: 'FY/2013-01/2014' },
                 { value: '01/31/2014' },
                 { value: '9963.14' },
                 { value: '9963.14' },
                 { value: '9963.14' } ],
              type: 'Data' },
            { ColData: 
               [ { value: '02/28/2014' },
                 { value: 'Bill' },
                 { value: '02/2014' },
                 { value: '02/28/2014' },
                 { value: '6378.14' },
                 { value: '6378.14' },
                 { value: '16341.28' } ],
              type: 'Data' },
            { ColData: 
               [ { value: '03/31/2014' },
                 { value: 'Bill' },
                 { value: '03/2014' },
                 { value: '03/31/2014' },
                 { value: '2556.0' },
                 { value: '2556.0' },
                 { value: '18897.28' } ],
              type: 'Data' },
            Summary: 
            { ColData: 
             [ { value: 'Total for GS & CO' },
               { value: '' },
               { value: '' },
               { value: '' },
               { value: '27567.44' },
               { value: '27567.44' },
               { value: '' } ] },
      type: 'Section' },

在我的服务器(app.js)中,我将JSON传递给视图,如下所示:

res.render('home.jade', {title: "hello",
                          reportname: report["Header"]['ReportName'],
                          daterange: "From:"+report["Header"]["StartPeriod"]+" to: "+report["Header"]["EndPeriod"],
                          alldata: report,
                          columns: report["Columns"],
                          rowsperclient: report["Rows"]["Row"]
                        });

在我看来,我正在尝试使用JSON提供给我的列和行数据来构建表。当我想要遍历每个Header的{​​{1}}部分时,我正在撞墙。

Row

这给了我以下HTML输出:

  // First loop returns total number of records
  // for our API call
  each row, idx in rowsperclient
    each header, idx2 in row
      h5= idx2 +" -> "+rowsperclient[idx]

我要做的是显示每个标题的第一个值 - 这是公司名称。 然后我想循环遍历Header -> [object Object] Rows -> [object Object] Summary -> [object Object] 并相应地显示它。

我无法弄清楚如何绕过每行的ColData部分。

1 个答案:

答案 0 :(得分:0)

您可能想要做类似

的事情
each cell, idx in rowsperclient.Header.ColData
    h5= idx +" -> "+ cell.value

或者喜欢

each row in rowsperclient.Rows.Row
    each cell, idx in row.ColData
        h5= rowsperclient.Header.ColData[idx].value +" -> "+ cell.value

顺便说一下,结构的名称确实很糟糕(行中的行,“行”(变量名不带多个)用于集合,“行”用于非集合,......)。这使得开发和可维护性变得更加困难。