【问题标题】:remove commas from stringified JSON but not commas separating array从字符串化 JSON 中删除逗号,但不删除逗号分隔数组
【发布时间】:2019-02-12 01:14:42
【问题描述】:

我有在描述字段中包含逗号的字符串化 JSON 数据。如果我在数据中有撇号或逗号,AJAX 帖子将失败。
如何从我的var test = JSON.stringify(data) 中删除以下内容

test 会打印如下: [{"var1":"0","description":"this, has, commas"},{"var1":"1","description":"more, commas"}]

我可以去掉描述中的逗号,使 JSON 字符串看起来像: [{"var1":"0","description":"this has commas"},{"var1":"1","description":"more commas"}]
所以留下分隔对象的逗号?
或者更好……:
[{"var1":"0","description":"this \\, has \\, commas"},{"var1":"1","description":"more \\, commas"}]


数据需要被推回我的服务器并在更改后重新加载到我的数据库中,逗号和撇号需要保持完整。
test.replace(/,/g,"") 当然...去掉逗号把物体也分开,把我搞砸了。
任何人都非常了解正则表达式,这可能会建议一种在 "},{" 之间替换“,”但“不是”的方法? (双引号是为了强调)
感谢您的帮助。

【问题讨论】:

  • 为什么不从元素中删除逗号,然后对结果数组进行字符串化?
  • 我提供的数据只是一个样本,我使用的数据是巨大的。从数据库中提取,进行修改并推送回服务器,并非我提取的所有数据都包含逗号。一次大约 50K 的数据。我可以补充一下,它需要用逗号和撇号“放回”我的 oracle DB。
  • 您的问题是:“如果数据中有撇号或逗号,AJAX 帖子将失败。”您需要您的帖子处理任意数据。
  • 能否将 JSON 解析为一个对象,然后查看该对象的每个字段,将“,”替换为“\”,然后重新字符串化?
  • 为什么服务器发送有效数据失败?

标签: jquery json replace stringify


【解决方案1】:

用否定的前瞻来做 test.replace 怎么样 - https://regex101.com/r/WtHcuO/2/:

var data = JSON.stringify([{"var1":"0","description":"this, has, commas"},{"var1":"1","description":"more, commas"}]);

var stripped = data.replace(/,(?!["{}[\]])/g, "");

console.log(stripped);

或者,如果您想保留逗号但将其转义,您可以替换为 \\, 而不是 ""

var data = JSON.stringify([{"var1":"0","description":"this, has, commas"},{"var1":"1","description":"more, commas"}]);

var stripped = data.replace(/,(?!["{}[\]])/g, "\\,");

console.log(stripped);

【讨论】:

  • 哦,这很聪明。
  • 用正则表达式解析 json 是荒谬的。将其转换回对象/数组并正确执行(或在字符串化之前执行此操作),如果有的话。
  • 感谢 mhodges,这太完美了……如果可能的话,我会给你一百个向上箭头!再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-11
相关资源
最近更新 更多