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

215
Vistas
Check if a string is a valid JSON in Typescript

There are many sources on how to do so in Javascript, but it seems it's not that simple in Typescript. I want to check if a string is a valid JSON, I have tried the following code:

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

But no matter what string I try it does not throw an error, even a random string such as "[asc,22"

I have also tried this:

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

But in this case it returns false no matter what string is used, I am not understanding why but the JSON.parse() function always returns a string no matter what I pass it.

I want the function to have results like this:

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

EDIT: This DOES work in Typescript after verifying on the online platform typescriptlang.org, I am not sure if it might be a problem in ReactJS, the file I am working in is of type .tsx

EDIT 2: The issue turned out not to be related to typescript or react, but the code was misusing elsewhere the "JSON.stringify" method, answer was posted below.

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

0

It turned out that the second function I mentioned in the question is working afterall according to what I needed, what was happening is that deep in my code the input that was a string was being stringified again before being passed to the method, that meant that when I was parsing it, it was always returning a string and never throwing an error. My bad for not noticing the JSON.stringify and not understanding its behavior well.

The correct answer to this question would then be as mentioned in the question:

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() does throw an exception if the input is not correct, you are just catching it in the catch block, verify by running the snippet below.

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

about 4 years ago · Juan Pablo Isaza Denunciar

0

You were correct but to show a good/bad example here it goes.

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