Nivin Rai
Nivin Rai

Reputation: 258

How to append json array data to html table tbody

I am very new into jQuery and JSON. I need to parse a JSON of the following format so as to populate a html table tbody:

{"response":[["name0","id0","amt0"],["name1","id1","amt1"]]}

But I am not sure how to get access to them, so to get html table in the following way:

header1 header2 header3
name0   id0     amt0
name1   id1     amt1

Upvotes: 1

Views: 20812

Answers (3)

Sami
Sami

Reputation: 8419

Call jsonToHtmlTable(jsonObj, '#records'); after following HTML (e.g in document ready)

Html

<table id="records">
    <thead>
        <tr></tr>
    </thead>
    <tbody></tbody>
</table>

JavaScript

//Sample JSON Object (array of json objects)
var jsonObj = [{"a":1,"b":3,"ds":4},{"a":2,"b":5,"ds":4}];

//Use
$(document).ready(function(){
     jsonToHtmlTable(jsonObj, '#records');
});

//implementation
function jsonToHtmlTable(jsonObj, selector) {
    addColumns(jsonObj, selector);
    addRows(jsonObj, selector);
}

function addColumns(jsonObj, selector) {
    if (!$.isArray(jsonObj) || jsonObj.length < 1)
        return;
    var object = jsonObj[0];
    var theadHtml = "";
    for (var property in object) {
        if (object.hasOwnProperty(property))
            theadHtml += "<th>" + property + "</th>";
    }
    $(selector + ' thead tr').html(theadHtml);
}

function addRows(jsonObj, selector) {
    var tbody = $(selector + ' tbody');
    $.each(jsonObj, function (i, d) {
        var row = '<tr>';
        $.each(d, function (j, e) {
            row += '<td>' + e + '</td>';
        });
        row += '</tr>';
        tbody.append(row);
    });
}

Upvotes: 1

MazarD
MazarD

Reputation: 2740

Not tested but it can be something like:

var jsondata=$.parseJSON('{"response":[["name0","id0","amt0"],["name1","id1","amt1"]]}');

$.each(jsondata.response, function(i, d) {
   var row='<tr>';
   $.each(d, function(j, e) {
      row+='<td>'+e+'</td>';
   });
   row+='</tr>';
   $('#table tbody').append(row);
});

Upvotes: 9

Alberto De Caro
Alberto De Caro

Reputation: 5213

You can access the JSON structure wiht this Javascript expression:

var matrix = {"response":[["name0","id0","amt0"],["name1","id1","amt1"]]};

The j-th column of the i-th element is accessible with this:

matrix.response[i][j]

Upvotes: 0

Related Questions