2014-09-24 2 views
0

Я работаю с node.js и использую Jade в качестве механизма шаблонов. У меня есть ответ JSON, который я получаю от API.Петля по определенному ключу в JSON с использованием Jade

Довольно стандарт. Это то, что он выглядит следующим образом:

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 частей каждого .

// 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 в каждой строке.

ответ

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 

Кстати, структура имеет очень плохие имена (строки в строках, "строка" (переменная имя без множественного числа) для коллекции, «строки» для не-коллекции, ...). Это делает разработку и техническую поддержку намного сложнее.

+0

спасибо. Я попробую ваше решение. Этот JSON - это API Quickbooks. Это боль, чтобы читать, это правда. – frishi

+0

Я попробовал оба решения. В обоих случаях я получаю сообщение «Can not read property ColData/Row of undefined». Это связано с тем, что мой JSON не является строковым? – frishi

Смежные вопросы