将sql对象转换为node.js中有效的Jsonstring – Azure
我们使用node.js在Azure服务中创build一个Web服务,以从SQL数据库中检索数据。 我们使用ClearDB来做同样的事情。
在回顾数据时,它没有以合适的JSON格式提交。 我们如何将结果sql对象转换为JSONstring。
以下是我的代码。
app.get('/android', function(request, response) { pool.getConnection(function(err, connection) { if(err) { handleErrorResponse(err, response); return; } var sql = "select projectname from taggedemployee where empname='test@hotmail.com' and tagflag='accepted'" connection.query(sql, {}, function(err, results) { connection.release(); // always put connection back in pool after last query if(err) { handleErrorResponse(err, response); return; } var proj = JSON.stringify(results); console.log(proj); console.log(proj[0].projectname); for(var myKey in proj) { console.log("key:"+ myKey+", value:"+proj[myKey]); } response.setHeader('Content-Type', 'application/json'); response.status(200).send(JSON.stringify(results) ); }); }); });
我不能操纵返回的string是JSONstring
[{projectname: "Dominos"}]
我试过JSON.stringify
但没有运气。 请帮我解决这个问题
实际上你不需要JSON.stringify()
。 results
已经是你的javascript对象,它代表了json对象的数组。 只是使用
console.log(results[0].projectname);
JavaScript对象或数组是JSON,您需要通过函数eval
或JSON.parse
将JSONstring转换为JavaScript对象。 请参考http://www.json.org/js.html 。
如您所示,来自SQL服务的响应是JSON。 您需要使用JSON.parse()将JSONparsing为对象。 就像是:
app.get('/android', function(request, response) { pool.getConnection(function(err, connection) { if(err) { handleErrorResponse(err, response); return; } var sql = "select projectname from taggedemployee where empname='test@hotmail.com' and tagflag='accepted'" connection.query(sql, {}, function(err, results) { connection.release(); // always put connection back in pool after last query if(err) { handleErrorResponse(err, response); return; } var proj = JSON.parse(response); console.log(proj); response.setHeader('Content-Type', 'application/json'); response.status(200).send(results); }); }); });
JSON.stringify用于将对象转换为JSONstring。 JSON.parse用于将JSONstring转换为对象。