Recibo un error al analizar lo que parece ser json válido. La cadena JSON contiene un carácter de comillas dobles con escape dentro de una cadena.
He condensado el ejemplo para que sea lo más simple posible de reproducir y pegar a continuación. El navegador que estoy usando para probar esto es Chrome versión 100.0.4896.75.
¿Alguien puede ayudarme a entender qué estoy haciendo mal aquí?
let a = JSON.parse('{"a": "\""}');Error: { "mensaje": "SyntaxError: JSON.parse: esperado ',' o '}' después del valor de propiedad en el objeto en la línea 1, columna 9 de los datos JSON", "nombre de archivo": "https://stacksnippets.net /js", "lineno": 13, "colno": 22 }
Necesita 2 barras en un literal de cadena para representar una sola barra en la cadena.
O también puede usar una plantilla de cadena sin procesar.
let a = JSON.parse('{"a": "\\""}'); let b = JSON.parse(String.raw`{"b": "\""}`); console.log(a,b);El analizador JSON está recibiendo el valor '{"a": """}' , porque el \ en sí mismo no se escapa. Si lo hace
JSON.stringify({ "a": "\"" }) verá que los resultados en cadena son '{"a":"\\""}' .
La cadena válida para analizar en su caso debe ser:
const str = '{"a":"\\""}' const parsedStr = JSON.parse(str); console.log(parsedStr);Explicación:
La siguiente es una inicialización de cadena no válida
const str = "\";La sintaxis válida es:
const str = "\\"; console.log(str); Por lo tanto, \\ se traduce en \ (el primero escapa al segundo). El \ escapado se usa para escapar " en su caso.
Además, salida de esto:
const str = "\\\\"; console.log(str); const strWithQuote = "\\\"\\"; console.log("String with quote: ", strWithQuote);