【发布时间】:2017-03-22 20:40:57
【问题描述】:
我正在尝试将数据解析为 JSON。数据如下所示:
[{
'Id': 1,
'FirstName': 'bob',
'LastName': '',
'Description': 'description can include escaped single quotes: \'.'
}]
结果应该如何:
[{
"Id": 1,
"FirstName": "bob",
"LastName": "",
"Description": "description can include escaped single quotes: \'."
}]
重点是用双引号替换所有未转义的单引号,同时保留转义的引号。
我有正则表达式,它已经很好地将单引号转换为 JSON 的双引号,同时忽略转义的单引号。
/((?!\\).{1}|^.{0,0})\'/g
问题: 问题在于,对于'LastName': '' 位,它仅将第一个引号替换为 " 而不是第二个... 使其变为:"LastName": "',这是无效的JSON。
问题:如何修改我的正则表达式以确保替换两个单引号?我觉得连续两次运行string.replace 是一个肮脏的解决方案......
【问题讨论】:
-
如果您的数据是 JavaScript 文字,请使用 a JavaScript parser。
-
你可以试试
.replace(/'([^'\\]*(?:\\.[^'\\]*)*)'/g, '"$1"') -
this one@WiktorStribiżew 怎么样
-
@revo 失败,因为转义的单引号已更改。
标签: javascript regex