我必须使用返回无效JSON的API:
{
"data": [
{
"tags": [
{
"t": "DefaultKPI",
d: "Some default KPI parameters",
cv: 6.0000000000000000,
cvS: "6.000",
ct: 0,
tv: "",
tvS: "NaN",
u: "",
s: 0,
gmax: "",
gmaxS: "NaN",
gmin: "",
gminS: "NaN",
hhh: "",
hhhS: "NaN",
hh: "",
hhS: "NaN",
h: "",
hS: "NaN",
l: "",
lS: "NaN",
ll: "",
llS: "NaN",
lll: "",
lllS: "NaN",
up: ""
}
]
}
]
}
正如您所看到的,名称并不总是被引号括起来。 我想创建一个JS函数来添加它们,这意味着选择它们来检查是否有引号,如果没有,则添加它们。
我是regex的新手,所以我在regex101上尝试了一段时间,但我很难搞清楚。
到目前为止我所拥有的是
/(,.*?:)/
匹配
,d:
我从教程中了解到
/(,.*?:)+/
会全部选择它们,但它不起作用。
此外,我想从匹配中删除分隔符(例如,我之前的示例应该返回
d
这将使我的生活在替换部分更容易,但我无法弄清楚如何做到这一点。
答案 0 :(得分:0)
如果它解析为JS(并且这样做),那么抓住你的鼻子并使用eval
。当您的代码未能通过审核时,请告诉您的老板,在服务器人员站起来并给您正确的JSON时,您将摆脱eval
。
请记住,您必须将它括在括号中,或者在开头添加var foo =
,这样JS就不会感到困惑,并认为领先的{
会阻止它。< / p>
现在希望并祈祷服务器向导不要找到一种方法来给你一些东西,这种东西在某种程度上被打破,即使eval
也无法处理它。
答案 1 :(得分:-2)
您可以使用JSON.stringify
方法代替正则表达式。