在node.js-Azure中将sql对象转换为有效的Json字符串
Convert sql object to valid Json string in node.js - Azure
我们正在Azure服务中创建一个web服务,使用node.js从SQL数据库中检索数据。我们正在使用ClearDB来做同样的事情。
在检索数据时,它没有以正确的JSON格式进行混合。我们如何将结果sql对象转换为JSON字符串。
下面是我的代码。
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) );
});
});
});
我无法操作JSON字符串,返回的字符串是
[{projectname: "Dominos"}]
我试过JSON.stringify
,但没有成功。请帮助我解决这个问题
实际上您并不需要JSON.stringify()
。results
已经是您的javascript对象,它表示json对象的数组。只需使用
console.log(results[0].projectname);
JavaScript Object或Array是JSON,您需要通过函数eval
或JSON.parse
将JSON字符串转换为JavaScript Object。请参阅http://www.json.org/js.html.
SQL服务的响应是JSON,正如您所示。您需要使用JSON.parse()将JSON解析为对象。类似于:
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);
});
});
});
stringify用于将对象转换为JSON字符串。JSON.parse用于将JSON字符串转换为对象。
我构建了一个函数来将查询转换为JSON,它运行得很好:
我使用了几个表中的Date列,它需要是字符串(这对我来说很好),所以这些列必须被调用/包含";日期";,其他数据列将采用float.2f格式。
def conv_func(data, columns):
gen_dict={}
for j, row in enumerate(data):
dict = {}
for col in columns:
dict[col] = ''
for i, val in enumerate(dict.keys()):
if 'Date' in val:
dict[val]=str(row[i])
else:
try:
dict[val] = round((row[i]),2)
except:
dict[val]=(row[i])
gen_dict[j] = dict
return list(gen_dict.values())
并为查询本身使用相同的列列表:
def get_tools():
cur = set_connection()
columns=['Col1','Col2','Col3']
columnsQuery=','.join(columns)
cur.execute(f"SELECT {columnsQuery} FROM [MyTable] ORDER BY [Col1] DESC")
data = cur.fetchall()
return {'success': True, 'data': conv_func(data,columns)}
相关文章:
- 如何将数组转换为有效的json
- 当其他解析器认为意外的令牌有效时,json.parse会失败
- jquery ajax”;SyntaxError:意外的输入结束“;基于有效的JSON
- 使用Underscore.js修改json数组中所选元素的更有效方法
- 将JSON存储和恢复到此Ionic应用程序的最有效方法
- JSON.parse给了我一个错误,但JSONLint说它'是一个有效的json
- I'我在页面加载时将整个$_SESSION变量放入一个json对象中.虽然这对我有效,但这是一个好的做法吗
- $http-get方法即使使用AngularJS中.Net WebApi的有效json也会失败
- 从文件目录结构创建JSON数据的有效功能
- 列表/数组是否有效 JSON
- 解析有效 JSON 时出现“未捕获的语法错误:意外令牌:”
- 以角度Js显示数据的有效JSON
- Javascript-JSON.parse:数据意外结束-使用有效JSON时出错.我做错了什么
- 带有Object数据的Javascript 2D数组通过$.Ajax()转换为PHP$_POST的有效JSON字符串
- 要解析的有效JSON或JavaScript对象
- 解析有效JSON字符串时遇到问题
- 返回有效JSON时调用Ajax错误回调
- 具有有效JSON输出的JSONP分析错误
- 从无效转换为有效 JSON
- 返回有效JSON时触发getJSON失败(即使在同一域上)