如何在节点中以json格式显示行内容?

我试图通过节点使用驱动程序从SQL Server 2008中获取数据。 不知何故,我可以成功地获取数据..我的问题是如何以Json格式显示它。

我的代码是这样的:

execSql("select * from tblStudent", function (err,rows) { console.log("City_StrCode:" + rows[0].value); console.log("State_StrCode:" + rows[1].value); console.log("City_StrName:" + rows[2].value); }); 

现在查询数据库后我的结果是这样的:

 City_StrCode:0005 State_StrCode:ORS City_StrName:Ratnagiri12 City_StrCode:1002 State_StrCode:78899 City_StrName:thousandtwo City_StrCode:1010 State_StrCode:1001 City_StrName:U FOOL34 Status:true City_StrCode:105 State_StrCode:001 City_StrName:dgrt12 City_StrCode:1789 State_StrCode:001 City_StrName:XZAS12 

build议我一些东西

JSON stringify有一个arg来美化和缩进。 这将打印和缩进每个2级空间。

 console.log(JSON.stringify(myObject, null, 2); 

所以这:

 var obj = ['one', 'two', {a:1, b:2}]; console.log(JSON.stringify(obj, null, 2)); 

输出:

 [ "one", "two", { "a": 1, "b": 2 } ] 

如果原始对象包含的数据比您想要的要多,或者您希望有select性,或者您想要控制如何生成JSON obj,那么您可以将数据复制到一个新的对象,然后打印出来。 还要注意,你的SQL结果集是平坦的,所以你循环允许你将其构build到对象中。 就像是 …

 execSql("select * from tblStudent", function (err,rows) { for (i=0; i<rows.length; i++) { var output; var fieldNum = i % 3; switch (fieldNum){ case 0: output = {}; output.cityCode = rows[i].value; break; case 1: output.stateCode = rows[i].value; break; case 2: output.stateName = rows[i].value; console.log(output, null, 2); break; } } }); 

如果你想注销每一行作为一个单一的对象这样做

 execSql("select * from tblStudent", function (err,rows) { rows.forEach(function (row) { console.log(row); }); }); 

或像bryanmac格式提出:

 execSql("select * from tblStudent", function (err,rows) { rows.forEach(function (row) { console.log(JSON.stringify(row, null, 2)); }); });