我从API得到了类似的数据,我需要做JSON.解析,但问题是有内部双引号,所以我无法解析它。我应该怎么做,我可以使用regex或其他什么吗。
const dataString = '{"EN" : "2. This English "Blha Blha" "Woo Woo" something wrong."}';
我还使用了这个正则表达式
replace(/(^"|"$)|"/g, "'");
但通过使用此regex,它将所有双引号替换为单引号,如下所示=>
{'EN' : '2. This English 'Blha Blha' 'Woo Woo' something wrong.'};
我只想替换像这样的报价
{'EN' : '2. This English "Blha Blha" "Woo Woo" something wrong.'};
问题是,如果单引号用于包装键/值,那么它们就不是JSON的有效符号。为了清楚起见,您需要转义值中的双引号符号。一个更好的方法是用这个修正来更新你的API。更丑陋但工作方式如下:
const dataString = '{"EN" : "2. This English "Blha Blha" "Woo Woo" something wrong."}';
const normalize = (dataString) => {
let newString = dataString;
newString = newString.replaceAll(`"`, `\"`);
newString = newString.replaceAll(`{\"`, `{"`);
newString = newString.replaceAll(`\"}`, `"}`);
newString = newString.replaceAll(`\" : \"`, `" : "`);
return newString;
};
console.log(JSON.parse(normalize(dataString)));