Estoy trabajando en una aplicación donde una función necesita validar si un parámetro de cadena proporcionado es json válido. Pero la función también necesita manejar JSON que se ha copiado de Jira. Por ejemplo, el json podría verse así:
"{ "query": { "size": 0, "aggregations": { "ipTag": { "terms": { "field": "ipTag", "size": 1001 } } } }, "table": "ip_info_table" }"
No estoy seguro si el siguiente formato del parámetro de cadena se debe a que se copió/pegó de Jira, o si tiene que ver con los controles de entrada de MUI. Pero de todos modos, así es como se ve el formato cuando copio/pego la variable en un reloj CDT:
"{\n \"query\": {\n \"size\": 0,\n ...."
Entonces, ¿qué tipo de rutina de código recomendaría para manejar este escenario? ¿Hay alguna lógica que pueda usar para formatear el valor del parámetro de entrada de muestra anterior, de modo que JSON.parse() valide correctamente el valor del parámetro como JSON?
JSON.parse
para validar JSON:
let valid = false; try { JSON.parse(str); console.log('valid'); valid = true; } catch { console.log('invalid'); } console.log(valid);
Ejemplos:
const json = `{ "query": { "size": 0, "aggregations": { "ipTag": { "terms": { "field": "ipTag", "size": 1001 } } } }, "table": "ip_info_table" }`; try { JSON.parse(json); console.log('valid'); } catch { console.log('invalid'); }
const json = "{\n \"query\": {\n \"size\": 0\n} }"; try { JSON.parse(json); console.log('valid'); } catch { console.log('invalid'); }
const json = `{ "query": { "size": 0, "aggregations": { "ipTag": { "terms": { "field": "ipTag", "size": 1001 } } } }, "table": "ip_info_table", }`; try { JSON.parse(json); console.log('valid'); } catch { console.log('invalid'); }