Display JSON Data in HTML Table

后端 未结 9 2105
既然无缘
既然无缘 2020-11-27 03:47

I get the following JSON String from server as response

[{\"city\":\"AMBALA\",\"cStatus\":\"Y\"},{\"city\":\"ASANKHURD\",\"cStatus\":\"Y\"},{\"city\":\"ASSA         


        
9条回答
  •  一生所求
    2020-11-27 04:26

    I created the following function to generate an html table from an arbitrary JSON object:

    function toTable(json, colKeyClassMap, rowKeyClassMap){
        let tab;
        if(typeof colKeyClassMap === 'undefined'){
            colKeyClassMap = {};
        }
        if(typeof rowKeyClassMap === 'undefined'){
            rowKeyClassMap = {};
        }
    
        const newTable = '';
        if($.isArray(json)){
            if(json.length === 0){
                return '[]'
            } else {
                const first = json[0];
                if($.isPlainObject(first)){
                    tab = $(newTable);
                    const row = $('');
                    tab.append(row);
                    $.each( first, function( key, value ) {
                        row.append($('');
                        $.each( value, function( key, value ) {
                            row.append($('');
                        const td = $('')
                        .append($('
    ').addClass(colKeyClassMap[key]).text(key)) }); $.each( json, function( key, value ) { const row = $('
    ').addClass(colKeyClassMap[key]).html(toTable(value, colKeyClassMap, rowKeyClassMap))) }); tab.append(row); }); return tab; } else if ($.isArray(first)) { tab = $(newTable); $.each( json, function( key, value ) { const tr = $('
    '); tr.append(td); $.each( value, function( key, value ) { td.append(toTable(value, colKeyClassMap, rowKeyClassMap)); }); tab.append(tr); }); return tab; } else { return json.join(", "); } } } else if($.isPlainObject(json)){ tab = $(newTable); $.each( json, function( key, value ) { tab.append( $('
    ').addClass(rowKeyClassMap[key]).text(key)) .append($('').addClass(rowKeyClassMap[key]).html(toTable(value, colKeyClassMap, rowKeyClassMap)))); }); return tab; } else if (typeof json === 'string') { if(json.slice(0, 4) === 'http'){ return ''+json+''; } return json; } else { return ''+json; } };

    So you can simply call:

    $('#mydiv').html(toTable([{"city":"AMBALA","cStatus":"Y"},{"city":"ASANKHURD","cStatus":"Y"},{"city":"ASSANDH","cStatus":"Y"}]));
    

    提交回复
    热议问题