Open In App

How to convert JSON data to a html table using JavaScript/jQuery ?

Given an HTML document containing JSON data and the task is to convert JSON data into an HTML table. 

These are the following approaches for converting the JSON data to an HTML table:



Approach 1: Using for loop

Example: This example implements the above approach.  






<!DOCTYPE HTML>
<html>
 
<head>
    <title>
        How to convert JSON data to a
        html table using JavaScript ?
    </title>
 
    <script src=
    </script>
</head>
 
<body style="text-align:center;" id="body">
 
    <h1 style="color:green;">
        GeeksForGeeks
    </h1>
 
    <p id="GFG_UP" style="font-size: 15px; font-weight: bold;">
    </p>
 
 
    <button onclick="constructTable('#table')">
        click here
    </button>
 
    <br><br>
 
    <table align="center" id="table" border="1">
    </table>
 
    <script>
        let el_up = document.getElementById("GFG_UP");
 
        let list = [
            { "col_1": "val_11", "col_3": "val_13" },
            { "col_2": "val_22", "col_3": "val_23" },
            { "col_1": "val_31", "col_3": "val_33" }
        ];
 
        el_up.innerHTML = "Click on the button to create "
            + "the table from the JSON data.<br><br>"
            + JSON.stringify(list[0]) + "<br>"
            + JSON.stringify(list[1]) + "<br>"
            + JSON.stringify(list[2]);
 
        function constructTable(selector) {
 
            // Getting the all column names
            let cols = Headers(list, selector);
 
            // Traversing the JSON data
            for (let i = 0; i < list.length; i++) {
                let row = $('<tr/>');
                for (let colIndex = 0; colIndex < cols.length; colIndex++) {
                    let val = list[i][cols[colIndex]];
 
                    // If there is any key, which is matching
                    // with the column name
                    if (val == null) val = "";
                    row.append($('<td/>').html(val));
                }
 
                // Adding each row to the table
                $(selector).append(row);
            }
        }
 
        function Headers(list, selector) {
            let columns = [];
            let header = $('<tr/>');
 
            for (let i = 0; i < list.length; i++) {
                let row = list[i];
 
                for (let k in row) {
                    if ($.inArray(k, columns) == -1) {
                        columns.push(k);
 
                        // Creating the header
                        header.append($('<th/>').html(k));
                    }
                }
            }
 
            // Appending the header to the table
            $(selector).append(header);
            return columns;
        }      
    </script>
</body>
 
</html>

Output: 

Output

Approach 2: Using JSON.stringify() method

Example: This example implements the above approach. 




<!DOCTYPE HTML>
<html>
 
<head>
    <title>
        How to convert JSON data to a html
        table using JavaScript/jQuery ?
    </title>
 
    <script src=
    </script>
</head>
 
<body style="text-align:center;">
 
    <h1 style="color:green;">
        GeeksForGeeks
    </h1>
 
    <p id="GFG_UP" style="font-size: 15px; font-weight: bold;">
    </p>
 
 
    <button onclick="GFG_FUN()">
        click here
    </button>
 
    <br><br>
 
    <table id="table" align="center" border="1px"></table>
 
    <script>
        let el_up = document.getElementById("GFG_UP");
 
        let list = [
            {
                "col_1": "val_11", "col_2": "val_12",
                "col_3": "val_13"
            },
            {
                "col_1": "val_21", "col_2": "val_22",
                "col_3": "val_23"
            },
            {
                "col_1": "val_31", "col_2": "val_32",
                "col_3": "val_33"
            }
        ];
 
        el_up.innerHTML = "Click on the button to create the "
            + "table from the JSON data.<br><br>"
            + JSON.stringify(list[0]) + "<br>"
            + JSON.stringify(list[1]) + "<br>"
            + JSON.stringify(list[2]);
 
        function GFG_FUN() {
            let cols = [];
 
            for (let i = 0; i < list.length; i++) {
                for (let k in list[i]) {
                    if (cols.indexOf(k) === -1) {
 
                        // Push all keys to the array
                        cols.push(k);
                    }
                }
            }
 
            // Create a table element
            let table = document.createElement("table");
 
            // Create table row tr element of a table
            let tr = table.insertRow(-1);
 
            for (let i = 0; i < cols.length; i++) {
 
                // Create the table header th element
                let theader = document.createElement("th");
                theader.innerHTML = cols[i];
 
                // Append columnName to the table row
                tr.appendChild(theader);
            }
 
            // Adding the data to the table
            for (let i = 0; i < list.length; i++) {
 
                // Create a new row
                trow = table.insertRow(-1);
                for (let j = 0; j < cols.length; j++) {
                    let cell = trow.insertCell(-1);
 
                    // Inserting the cell at particular place
                    cell.innerHTML = list[i][cols[j]];
                }
            }
 
            // Add the newly created table containing json data
            let el = document.getElementById("table");
            el.innerHTML = "";
            el.appendChild(table);
        }   
    </script>
</body>
 
</html>

Output: 

Outout

JavaScript is best known for web page development but it is also used in a variety of non-browser environments. You can learn JavaScript from the ground up by following this JavaScript Tutorial and JavaScript Examples.


Article Tags :