Tengo algo como estos datos que provienen de la API y necesito hacer JSON. parse esto, pero el problema era que había comillas dobles internas, así que no puedo analizarlo, ¿qué debo hacer? ¿Puedo usar expresiones regulares o algo así?
const dataString = '{"EN" : "2. This English "Blha Blha" "Woo Woo" something wrong."}';También usé esta expresión regular
replace(/(^"|"$)|"/g, "'");pero al usar esta expresión regular, reemplaza todas las comillas dobles con comillas simples como esta =>
{'EN' : '2. This English 'Blha Blha' 'Woo Woo' something wrong.'};Solo quiero reemplazar las comillas como esta.
{'EN' : '2. This English "Blha Blha" "Woo Woo" something wrong.'};La cuestión es que las comillas simples no son símbolos válidos para JSON si se usan para envolver claves/valores. Para que quede claro, debe escapar de los símbolos de comillas dobles en los valores. Un mejor enfoque es actualizar su API con esa corrección. La forma más fea pero funcional se coloca a continuación:
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)));