How to convert the following table to JSON with javascript?
Update: There's a slightly improved fork of the solution (below) on jsFiddle.
You just need to walk the DOM of your table reading it out... this is not even close to optimized but will give you the result you want. (jsFiddle)
// Loop through grabbing everything
var myRows = [];
var $headers = $("th");
var $rows = $("tbody tr").each(function(index) {
$cells = $(this).find("td");
myRows[index] = {};
$cells.each(function(cellIndex) {
myRows[index][$($headers[cellIndex]).html()] = $(this).html();
});
});
// Let's put this in the object like you want and convert to JSON (Note: jQuery will also do this for you on the Ajax request)
var myObj = {};
myObj.myrows = myRows;
alert(JSON.stringify(myObj));
And the output...
{"myrows":[{"Column 1":"A1","Column 2":"A2","Column 3":"A3"},{"Column 1":"B1","Column 2":"B2","Column 3":"B3"},{"Column 1":"C1","Column 2":"C2","Column 3":"C3"}]}
I needed the same thing except with the ability to ignore columns, override values, and not be confused by nested tables. I ended up writing a jQuery plugin table-to-json:
https://github.com/lightswitch05/table-to-json
All you have to do is select your table using jQuery and call the plugin:
var table = $('#example-table').tableToJSON();
Here is a demo of it in action:
http://jsfiddle.net/nyg4z/27/