Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

206
Vistas
Compruebe si una cadena es un JSON válido en Typescript

Hay muchas fuentes sobre cómo hacerlo en Javascript, pero parece que no es tan simple en Typescript. Quiero verificar si una cadena es un JSON válido, probé el siguiente código:

 function isJSON(str) { try { JSON.parse(str); } catch (e) { return false; } return true; }

Pero no importa qué cadena intente, no arroja un error, incluso una cadena aleatoria como "[asc, 22"

También he probado esto:

 function testJSON(strJson) { try { const parsed = JSON.parse(strJson) if (parsed && typeof parsed === "object") { return true } } catch { return false } return false }

Pero en este caso devuelve falso sin importar qué cadena se use, no entiendo por qué, pero la función JSON.parse() siempre devuelve una cadena sin importar lo que le pase.

Quiero que la función tenga resultados como este:

 "123" => false "abc" => false "{ "prop_1": "val_1", "prop_2": "val_2" }" => true "{ prop_1: "val_1", "prop_2": "val_2" }" => false

EDITAR: Esto SÍ funciona en Typescript después de verificar en la plataforma en línea typescriptlang.org, no estoy seguro de si podría ser un problema en ReactJS, el archivo en el que estoy trabajando es de tipo .tsx

EDICIÓN 2: resultó que el problema no estaba relacionado con el mecanografiado o la reacción, pero el código estaba usando incorrectamente en otro lugar el método "JSON.stringify", la respuesta se publicó a continuación.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Resultó que la segunda función que mencioné en la pregunta funciona después de todo de acuerdo con lo que necesitaba, lo que sucedía es que en lo profundo de mi código, la entrada que era una cadena se encadenaba nuevamente antes de pasar al método, eso significaba que cuando lo estaba analizando, siempre devolvía una cadena y nunca arrojaba un error. Mi error es no notar el JSON.stringify y no entender bien su comportamiento.

La respuesta correcta a esta pregunta sería entonces como se menciona en la pregunta:

 function testJSON(strJson) { try { const parsed = JSON.parse(strJson) if (parsed && typeof parsed === "object") { return true } } catch { return false } return false }
about 4 years ago · Juan Pablo Isaza Denunciar

0

JSON.parse() throw una excepción si la entrada no es correcta, solo lo está capturando en el bloque catch , verifique ejecutando el fragmento a continuación.

 console.log(JSON.parse("sqdfq["));

about 4 years ago · Juan Pablo Isaza Denunciar

0

Tenías razón, pero para mostrar un buen/mal ejemplo aquí va.

 let badJSON = `'""{bad bad}"'"`; let goodJSON = `{"type":"pong"}`; let CheckJSON = (Data) => { try { let message = JSON.parse(Data); if (message.type == "pong") { console.log("PING"); } } catch (e) { console.warn("close:"); } }; CheckJSON(goodJSON); CheckJSON(badJSON);
 https://stackoverflow.com/questions/70384627/check-if-a-string-is-a-valid-json-in-typescript#

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda