Skip to content Skip to sidebar Skip to footer

Creating Html Table From JSON Data

I have a an html file that has this snippet in it.
I am receiving JSON data that looks like this: { '1': [

Solution 1:

Try this simple working example. I hope it will work as per your expectation.

var dataObj = {
    "1": [{
            "A": "",
            "B": "",
            "C": "",
            "D": "",
            "E": ""
        },
        {
            "F": "",
            "G": "",
            "H": "",
            "I": "",
            "J": ""
        },
        {
            "K": "",
            "L": "",
            "M": "",
            "N": "",
            "O": ""
        }
    ]};

var dictionaryData = dataObj["1"];

for (var i in dictionaryData) {
  var table = document.getElementById("apps");
  var tr = document.createElement("tr");
  var td = document.createElement("td");
  
  for (var key in dictionaryData[i]) {
    var txt = document.createTextNode(key);
    td.appendChild(txt);
    tr.appendChild(td);
  }
  table.appendChild(tr);
}
table, td {
    border: 1px solid black;
}
<div>
    <table id="apps"></table>
</div>

Solution 2:

Don't know your requirements for the project, but I would skip all that trouble and use a library like DataTables. There are many ways to populate a table from AJAX or other data sources. Even if you are unable to tinker with table data source to comply with its standards, there is a method to reformat.


Solution 3:

Your question is "Which is better: having the table row and cell tags already in the markup, or build them as I get data?"

I would say the better option is to build the data as you get the objects.

In pseduocode:

for each object in 1
  make new row <tr></tr>

  for each data in object
    make new cell <td></td>
    insert data into <td>[here]</td>
    insert cell into <tr>[here]</tr>

  insert filled row into "apps" by using it's ID
done

Does this suffice for what you wanted to know?


Solution 4:

Check this demo:

var jsonResponse = {
    "1": [{
            "A": "",
            "B": "",
            "C": "",
            "D": "",
            "E": ""
        },
        {
            "F": "",
            "G": "",
            "H": "",
            "I": "",
            "J": ""
        }
    ],
    "2": [{
            "K": "",
            "L": "",
            "M": "",
            "N": "",
            "O": ""
        },
        {
            "P": "",
            "Q": "",
            "R": "",
            "S": "",
            "T": ""
        }
    ]
};

$.each(jsonResponse, function(outerKey, list) {
    var row = $('<tr>', {
        id: 'row_' + outerKey
    });
    $.each(list, function(innerKey, value) {
        for (var key in value) {
            var col = $('<td>', {
                id: key,
                text: key
            })
            row.append(col);
        }
    });
    $('#apps').append(row);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
    <table id="apps"></table>
</div>

Solution 5:

CREATE PROC SearchAllTables 
(
    @SearchStr nvarchar(100)
)
AS
BEGIN

    CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630))

    SET NOCOUNT ON

    DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
    SET  @TableName = ''
    SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')

    WHILE @TableName IS NOT NULL
    BEGIN
        SET @ColumnName = ''
        SET @TableName = 
        (
            SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
            FROM    INFORMATION_SCHEMA.TABLES
            WHERE       TABLE_TYPE = 'BASE TABLE'
                AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
                AND OBJECTPROPERTY(
                        OBJECT_ID(
                            QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
                             ), 'IsMSShipped'
                               ) = 0
        )

        WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
        BEGIN
            SET @ColumnName =
            (
                SELECT MIN(QUOTENAME(COLUMN_NAME))
                FROM    INFORMATION_SCHEMA.COLUMNS
                WHERE       TABLE_SCHEMA    = PARSENAME(@TableName, 2)
                    AND TABLE_NAME  = PARSENAME(@TableName, 1)
                    AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar')
                    AND QUOTENAME(COLUMN_NAME) > @ColumnName
            )

            IF @ColumnName IS NOT NULL
            BEGIN
                INSERT INTO #Results
                EXEC
                (
                    'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630) 
                    FROM ' + @TableName + ' (NOLOCK) ' +
                    ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
                )
            END
        END 
    END

    SELECT ColumnName, ColumnValue FROM #Results
 END


exec SearchAllTables @SearchStr='Canada'

Post a Comment for "Creating Html Table From JSON Data"