从动态JSON响应中渲染输出

时间:2015-07-13 11:26:26

标签: javascript json node.js

我将根据给定的输入获得动态JSON响应。 喜欢这个

{ results:
 [ { email: 'test@test.com',
    name: 'aaaaaa',
    phone: "987654321",
    createdAt: '2015-07-08T10:51:07.715Z',
    updatedAt: '2015-07-08T12:17:38.924Z',
   },
  { email: 'test12@test.com',
    name: 'bbbbbb',
    phone: "9845454510",
    createdAt: '2015-07-08T10:58:07.715Z',
    updatedAt: '2015-07-08T12:47:31.924Z', 
   } 
  ]
}

并且喜欢这个

{ results:
     [ { appName: 'myTest',
        key: 'MSZAD',
        env:"dev"
        },
      { appName: 'HelloWorldApp',
        key: 'TXCVD',
        env:"prod"
       } 
      ]
    }

如何渲染如下所示,

第一个例子

email           name      phone
-----------------------------------
test@test.com   aaaaaa    987654321
test12@test.com bbbbbb    9845454510

第二个例子

appname       key     env
--------------------------
myTest        MSZAD   dev
HelloWorldApp TXCVD   prod

如果响应相同,我可以使用带静态标题的简单循环。但反应是动态的。响应中只有results在所有响应中都是相同的。

修改

到目前为止我已尝试过的代码

var collection = JSON.parse(body).results;
     for (var i = 0; i<collection.length; i++) {
        var obj = collection[i];
        for (var key in obj) { 
            console.log(key+':'obj[key]);
        }

      }

输出:

email: test@test.com
name:aaaaaa
phone : 987654321
createdAt:...
updatedAt: ...

email: test12@test.com
name:bbbbbb
phone : 98454510
createdAt:...
updatedAt:...

1 个答案:

答案 0 :(得分:1)

试试这个

var data = { results:
 [ { email: 'test@test.com',
    name: 'aaaaaa',
    phone: "987654321",
    createdAt: '2015-07-08T10:51:07.715Z',
    updatedAt: '2015-07-08T12:17:38.924Z',
   },
  { email: 'test12@test.com',
    name: 'bbbbbb',
    phone: "9845454510",
    createdAt: '2015-07-08T10:58:07.715Z',
    updatedAt: '2015-07-08T12:47:31.924Z', 
   } 
  ]
};

var headers = data.results[0];
var hd = '';
for(var key in headers) {
    hd += key+' ';
}
console.log(hd);
for(var index in  data.results) {
    var obj = data.results[index];
    var out = '';
    for(var key in obj) {
        out += obj[key]+' ';
    }
    console.log(out);
}