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

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

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

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

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 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