【问题标题】:Loop over a specific key in JSON using Jade使用 Jade 循环遍历 JSON 中的特定键
【发布时间】:2014-09-24 18:27:23
【问题描述】:

我正在使用 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 提供给我的列和行数据来构建一个表。当我只想遍历每个 RowHeader 部分时,我碰壁了。

  // 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]

这给了我以下 HTML 输出:

Header -> [object Object]

Rows -> [object Object]

Summary -> [object Object]

我要做的是显示每个标题的第一个值 - 这是公司名称。 然后我想循环遍历ColData 并相应地显示它。

我不知道如何循环遍历每一行中的 Header 部分。

【问题讨论】:

    标签: javascript json node.js pug


    【解决方案1】:

    你可能想做类似的事情

    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
    

    顺便说一句,该结构的名称非常糟糕(行中的行,集合的“行”(不带复数的变量名称),非集合的“行”,...)。这使得开发和可维护性变得更加困难。

    【讨论】:

    • 谢谢。我会试试你的解决方案。此 JSON 来自 Quickbooks API。读起来很痛苦,这是真的。
    • 我确实尝试了这两种解决方案。在这两种情况下,我都会收到“无法读取未定义的属性 ColData/Row”这与我的 JSON 未字符串化这一事实有关吗?
    猜你喜欢
    • 2019-01-06
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多