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

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

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 Report

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 Report

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