簡體   English   中英

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事件(標題,值,其他)VALUES([“ newData”,4,2])我只需要在[ [“ newData”,4,2])上刪除[]方括號。 我該怎么做? 另外,如果有更好的方法將數據插入sqlite,建議也可以。 謝謝

JSON.stringify(dataArray)將始終返回方括號,因為dataArray的類型為array。 相反,您可以對數組中的每個元素進行字符串化,然后將其連接起來並以逗號分隔。

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, '')

暫無
暫無

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

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