I recently used this method to update this demo page, where I have a <pre> element with data in JSON format and I wanted to read the data in my JavaScript code. However, to read the data from the element, which is a string, I had to convert the string first to a JSON object.
Here’s how I did it.
<html> <head> <title>Convert JSON String to JSON Object in JavaScript</title> </head> <body> <pre id="jsonData" style="border:solid 1px #CCC;padding:0 5px;"> [ { "ID": "001", "Name": "Eurasian Collared-Dove", "Type": "Dove", "Scientific Name": "Streptopelia" }, { "ID": "002", "Name": "Bald Eagle", "Type": "Hawk", "Scientific Name": "Haliaeetus leucocephalus" }, { "ID": "003", "Name": "Cooper's Hawk", "Type": "Hawk", "Scientific Name": "Accipiter cooperii" } ] </pre> <p> <input type="button" id="btClick" value="String to JSON" onclick="str2json()" /> </p> <p>Note: See the output in your browsers console window!</p> </body> <script> function str2json() { var str = document.getElementById('jsonData').innerHTML; var jsonObj = JSON.parse(str); console.log(jsonObj); } </script> </html>
The data inside the <pre> element is in JSON format (a string). Using the innerHTML property, I am extracting the data from the element and storing it in a string variable.
👉 How to convert data in JSON file to an array using JavaScript or jQuery
To use the data that I have extracted from the <pre> element, I have to convert it into a JSON object. So, I am using the method JSON.parse(). The parameter inside the method has the string data.
When you run above code, the console window will show an output like this …
The method has converted the JSON string to a JSON object.
👉 How to use async and await to read data from an External JSON file
Now you can use the object’s data for a variety of purposes, such as, convert the JSON data to an HTML table or populate a SELECT dropdown list with the JSON, etc.
Run a simple for loop to read the data inside the object. For example, if I want to parse (or read) the Name in the JSON, then I’ll do this,
for (i = 0; i < jsonObj.length; i++) {
console.log(jsonObj[i].Name);
}
Similarly, you can read other values in the JSON object.
Remember: The string must be in a correct JSON format. Or else, it will throw an error. JSON.parse() method does allow trailing commas (a string or a text that ends with a comma). The below string will throw an error, since it has , (comma) at the end.
"Scientific Name": "Haliaeetus leucocephalus",