Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

207
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!