簡體   English   中英

將 sql 對象轉換為 node.js 中的有效 Json 字符串 - Azure

[英]Convert sql object to valid Json string in node.js - Azure

我們正在使用 node.js 在 Azure 服務中創建一個 Web 服務,以從 SQL db 中檢索數據。 我們正在使用 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 對象或數組是 JSON,您需要通過函數evalJSON.parse將 JSON 字符串轉換為 JavaScript 對象。 請參考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);

        });
    });
});

JSON.stringify用於將對象轉換為 JSON 字符串。 JSON.parse 用於將 JSON 字符串轉換為對象。

我構建了一個將查詢轉換為 JSON 的函數,它運行良好:

我使用多個表中的日期列,它需要是字符串(這對我來說很好),所以這些列必須被稱為/包含“日期”,其他數據列將是浮點 .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)}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM