Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

212
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda