[英]How to create JSON array and push values into it in node.js
我試圖按數組中的鍵,值,然后使用JSON.stringify()將其轉換為JSON。 但這是行不通的。
我的node.js代碼:
var jarray=[];
var json1="";
for (var i=0; i<jsonObj["Masters"]['Customer'].length; i++){
var name= jsonObj["Masters"]['Customer'][i];
var cust_name=name['Customer_Name'];
var cust_code=name['Customer_Code'];
connection.query("SELECT code FROM ((SELECT ccode AS code FROM customermaster WHERE companyid='AXWPM1658D') UNION ALL (SELECT scode AS code FROM suppliermaster WHERE companyid='AXWPM1658D') UNION ALL (SELECT stcode AS code FROM stockmaster WHERE companyid='AXWPM1658D') UNION ALL (SELECT gcode AS code FROM generalledger2 WHERE companyid='AXWPM1658D') UNION ALL (SELECT bcode AS code FROM bankmaster WHERE companyid='AXWPM1658D'))p where code='"+cust_code+"' ", function(err, rows, fields) {
if (!err){
var item ={"customer_name":cust_name ,"customer_code": cust_code };
jarray.push(item);
}
else{
console.log('Error while performing Query.'+err);
}
});
}
json1=JSON.stringify({jarray:jarray});
var jsonObj1 = JSON.parse(json1);
console.log("Json:"+jsonObj1);
console.log("arr length:"+jsonObj1.jarray.length);
它打印:
Json:{ jarray: [] }
arr length:0
我的問題是如何在數組中推送值並將其轉換為JSON數組?
您用什么來發出SQL請求? 看起來它具有異步行為。 如果是這樣,則可能是在對數組進行字符串化時為什么數組仍為空的原因。 順便說一句,使SQL請求循環不是很有效。 用一個SQL請求獲取所有結果也許更好,這也將使回調中的字符串化更容易
用這個:
var jarray = [];
var json1 = "";
var async = require('async');
async.forEachLimit(jsonObj["Masters"]['Customer'], 1, function(customer, callback) {
var name = customer;
var cust_name = name['Customer_Name'];
var cust_code = name['Customer_Code'];
connection.query("SELECT code FROM ((SELECT ccode AS code FROM customermaster WHERE companyid='AXWPM1658D') UNION ALL (SELECT scode AS code FROM suppliermaster WHERE companyid='AXWPM1658D') UNION ALL (SELECT stcode AS code FROM stockmaster WHERE companyid='AXWPM1658D') UNION ALL (SELECT gcode AS code FROM generalledger2 WHERE companyid='AXWPM1658D') UNION ALL (SELECT bcode AS code FROM bankmaster WHERE companyid='AXWPM1658D'))p where code='" + cust_code + "' ", function(err, rows, fields) {
if (!err) {
var item = {
"customer_name": cust_name,
"customer_code": cust_code
};
jarray.push(item);
callback();
} else {
callback(err);
console.log('Error while performing Query.' + err);
}
});
}, function(err) {
if (err) {
console.log(err);
} else {
json1 = JSON.stringify({
jarray: jarray
});
var jsonObj1 = JSON.parse(json1);
console.log("Json:" + jsonObj1);
console.log("arr length:" + jsonObj1.jarray.length);
}
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.