1

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
0

3 Answers 3

9

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);
});
Sign up to request clarification or add additional context in comments.

1 Comment

@erip it's the index of the iteration over jsondata.response (an array) so it will be 0 and 1.
1

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);
    });
}

Comments

0

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]

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.