JSON.stringify(array) 用方括号括起来

Posted

技术标签:

【中文标题】JSON.stringify(array) 用方括号括起来【英文标题】:JSON.stringify(array) surrounded with square brackets 【发布时间】:2015-06-26 12:53:50 【问题描述】:

我正在尝试将一组数据插入到 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 event (title,value,other) VALUES (["newData",4,2]) 我只需要删除 (["newData",4,2]) 上的 [] 方括号。 我该怎么做?此外,如果有更好的方法将数据插入到 sqlite 中,我愿意接受建议。谢谢

【问题讨论】:

JSON 不是 SQL。你需要使用参数。 【参考方案1】:

JSON.stringify(dataArray) 将始终返回方括号,因为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]

【讨论】:

【参考方案2】:

Drake 的回答是我个人的选择,因为代码清楚地表达了意图。但要显示一个替代方案:

var strung = JSON.stringify(dataArray);
console.log(strung.substring(1,strung.length-1));

【讨论】:

【参考方案3】:

感谢 Drakes 和 S McCrohan 的回答。我发现.replace(/]|[[]/g, '') 附加到JSON.stringify(dataArray)

整行JSON.stringify(dataArray).replace(/]|[[]/g, '')

【讨论】:

在未来的某个时候,括号可能会潜入您的dataArray 条目之一。众所周知 对。如果您想采用正则表达式方法(这也是有效的),请尝试/^\[|]$/g,仅匹配字符串的开头和结尾,并避免更改任何内部元素。

以上是关于JSON.stringify(array) 用方括号括起来的主要内容,如果未能解决你的问题,请参考以下文章

JSON.stringify深拷贝的缺点

JSON.stringify(),JSON.parse(),toJSON()方法使用

JSON、Array基础知识

原生js实现JSON.parse()和JSON.stringify()

JSON.stringify()方法的原生JS实现

为啥需要方括号来在 Javascript 中对 Map 的所有元素进行字符串化?