How to Check if a String is JSON in Javascript

In this tutorial, you will learn how to check if a string is JSON in javascript. JSON stands for JavaScript object notation syntax which is a standard text-based format to represent structured data based on javascript object syntax.

We do have JSON.parse() and JSON.stringify() methods available to convert JSON string to javascript object and vice versa.  But if the JSON string is malformed then JSON.parse() method will throw an error. We are going to take advantage of this method to check if a string is JSON.

In the following example, we have one global variable and upon click of a button, we want to validate if the string is JSON or not.  Our custom validation function will return true or false and we will display the result in the h1 element.  Please have a look over the code example and steps given below for a better explanation.

HTML & CSS

  • We have 3 elements in the HTML file (div, button, and h1). div element is just a wrapper for the rest of the elements.
  • The inner text for the button element is “Check” and for the h1 element is “Result”.
  • We have done some basic styling using CSS and added the link to our style.css stylesheet inside the head element.
  • We have also included our javascript file script.js with a script tag at the bottom.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="style.css">
    <title>Document</title>
</head>
<body>
    
    <div>
        <button>Check</button>    
        <h1>Result</h1>
    </div>

    <script src="script.js"></script>
</body>
</html>
body {
    text-align: center;
}

div {
    display: inline-block;
}

button {
    display: inline-block;
    padding:  10px 20px;
}

Javascript

  • We have selected two elements button and h1 using the document.querySelector() method and stored them in btnCheck and result variables respectively.
  • We have a global variable jsonObj and it holds a JSON string.
  • We have attached the click event listener to the button element.
  • In the click event handler function, we are calling isValidJson() method and passing our global variable jsonObj as a parameter.
  • We are setting the inner text of the h1 element to the Boolean value returned by isValidJson() method.
  • In isValidJson() method, we are using the try and catch block. Inside this block, we are first checking if the str type is a string.  Then, we are calling JSON.parse() method and passing str as a parameter. If it’s a valid JSON string, parsing will happen without any error, otherwise, it will throw an error.
  • Based on the above logic, we are returning true in the try block and false in the catch block.
let btnCheck = document.querySelector('button');
let result = document.querySelector('h1');

let jsonObj =  '{"name":"Marks", "age":"27"}';

btnCheck.addEventListener('click', () => {
    result.innerText = isValidJson(jsonObj) ? 'True' : 'False';
});

function isValidJson(str) {
    try {
        
        if(typeof str != 'string') return false;
        JSON.parse(str);
        return true
    } catch (error) {
        return false
    }
}