JSON.stringify(array) 用方括号括起来
JSON.stringify(array) surrounded with square brackets
我正在尝试获取一组数据以插入到 sqlite 数据库的多个列中,我几乎可以使用它:
function InsertData(dbData){
var valueArray = [], dataArray = [];
var values = Object.keys(dbData);
for(var key in values){
valueArray[valueArray.length] = values[key];
dataArray[dataArray.length] = dbData[values[key]];
}
console.log("INSERT INTO "+dbData.table+" ("+valueArray+") VALUES ("+JSON.stringify(dataArray)+")");
dbData.database.serialize(function(){
dbData.database.run("INSERT INTO "+dbData.table+" ("+valueArray+") VALUES ("+JSON.stringify(dataArray)+")");
});
}
我的数据是这样构造的:
//app.js
function EventData(title, value, other){
this.title = title;
this.value = value;
this.other = other;
}
EventData.prototype = new dbtools.DBData(usuevents, 'event');
var thisEventData = new EventData('newData', 4, 2);
//dbtools.js
DBData = function(database, table){
this.database = database;
this.table = table;
};
console.log 输出 INSERT INTO 事件 (title,value,other) VALUES (["newData",4,2])
我只需要删除 (["newData",4,2]) 上的 [] 方括号。
我该怎么做?另外,如果有更好的方法将数据插入 sqlite,我愿意接受建议。谢谢
JSON.stringify(dataArray)
总是 return 方括号,因为 dataArray
是数组类型。相反,您可以对数组的每个元素进行字符串化,然后将它们以逗号分隔。
dataArray = dataArray.map(function(e){
return JSON.stringify(e);
});
dataString = dataArray.join(",");
然后
["newData",4,2]
变成
"newData",4,2
附录: 请不要尝试 replace()
手动去掉括号,因为有一天括号可能会以字符串形式进入您的数组。例如["Please see ref[1]",4,2]
德雷克的回答是我个人的选择,因为代码清楚地表达了意图。但要显示一个替代方案:
var strung = JSON.stringify(dataArray);
console.log(strung.substring(1,strung.length-1));
感谢 Drakes 和 S McCrohan 的回答。我发现 .replace(/]|[[]/g, '')
附加到 JSON.stringify(dataArray)
整行JSON.stringify(dataArray).replace(/]|[[]/g, '')
我正在尝试获取一组数据以插入到 sqlite 数据库的多个列中,我几乎可以使用它:
function InsertData(dbData){
var valueArray = [], dataArray = [];
var values = Object.keys(dbData);
for(var key in values){
valueArray[valueArray.length] = values[key];
dataArray[dataArray.length] = dbData[values[key]];
}
console.log("INSERT INTO "+dbData.table+" ("+valueArray+") VALUES ("+JSON.stringify(dataArray)+")");
dbData.database.serialize(function(){
dbData.database.run("INSERT INTO "+dbData.table+" ("+valueArray+") VALUES ("+JSON.stringify(dataArray)+")");
});
}
我的数据是这样构造的:
//app.js
function EventData(title, value, other){
this.title = title;
this.value = value;
this.other = other;
}
EventData.prototype = new dbtools.DBData(usuevents, 'event');
var thisEventData = new EventData('newData', 4, 2);
//dbtools.js
DBData = function(database, table){
this.database = database;
this.table = table;
};
console.log 输出 INSERT INTO 事件 (title,value,other) VALUES (["newData",4,2]) 我只需要删除 (["newData",4,2]) 上的 [] 方括号。 我该怎么做?另外,如果有更好的方法将数据插入 sqlite,我愿意接受建议。谢谢
JSON.stringify(dataArray)
总是 return 方括号,因为 dataArray
是数组类型。相反,您可以对数组的每个元素进行字符串化,然后将它们以逗号分隔。
dataArray = dataArray.map(function(e){
return JSON.stringify(e);
});
dataString = dataArray.join(",");
然后
["newData",4,2]
变成
"newData",4,2
附录: 请不要尝试 replace()
手动去掉括号,因为有一天括号可能会以字符串形式进入您的数组。例如["Please see ref[1]",4,2]
德雷克的回答是我个人的选择,因为代码清楚地表达了意图。但要显示一个替代方案:
var strung = JSON.stringify(dataArray);
console.log(strung.substring(1,strung.length-1));
感谢 Drakes 和 S McCrohan 的回答。我发现 .replace(/]|[[]/g, '')
附加到 JSON.stringify(dataArray)
整行JSON.stringify(dataArray).replace(/]|[[]/g, '')