如何从json中删除null对象

如何从json中删除null对象

问题描述:

我是Bootstrap JS中的新成员。我有一张使用Bootsrap JS制作的表格,其数据来自Json文件。这是代码-如何从json中删除null对象

<div class="container-fluid"> 
    <div class="row"> 
     <div class="col-md-8"> 
      <div class="fixedscroll"> 
       <table id="user_table" class="table table-hover table-bordered table-striped responsive" style="margin-bottom: 0;" class="display"> 
        <thead> 
         <tr>         
          <th>UID</th> 
          <th>Name</th> 
          <th>Address</th> 
          <th>Tags</th> 
          <th>Edit tags</th>      
         </tr> 
        </thead> 
       </table> 
      </div> 
     </div> 
    </div> 

function showAll(){ 
    $.ajax({ 
     url: "showAll", 
     dataType:"json", 
     success:function(data){ 
      $('#user_table tr:gt(0)').remove(); 
      jQuery.each(data['Payload'], function(index, value) { 
      var row = '<tr>'        
        + '<td id="tduid">'+ value['uid']+ '</td>' 
        + '<td>'+ value['name']+ '</td>' 
        + '<td>'+ value['address']+ '</td>' 
        + '<td>'+ value['tag1']+ ',' + value['tag2']+ ',' + value['tag3']+'</td>' + '<td>'+ '<button class="deleteUser btn btn-danger" type="submit">Edit</button>' + '</td></tr>'; 

      $('#user_table').append(row); 
     }); 
    } 
}); 

现在这个Payload是我的json的名称,它来自我称之为数据库的servlet。

现在让我们看看有3个标签。但有些行有2个标签。所以,当我把值JSON将JSON看起来喜欢 -

{"Payload":[{"uid":"u01","name":"Subho","address":"Dumdum","tag1":"aircel","tag2":"vodafone","tag3":"airtel"},{"uid":"u02","name":"Jeet","address":"Baruipur","tag1":"airtel","tag2":"","tag3":"aircel"},{"uid":"u03","name":"Diba","address":"Jadavpur","tag1":"vodafone","tag2":"aircel","tag3":"airtel"},{"uid":"u04","name":"Tommy","address":"Baguihati","tag1":"aircel","tag2":"vodafone","tag3":""},{"uid":"u05","name":"Jonty","address":"Rahara","tag1":"","tag2":"vodafone","tag3":"airtel"},{"uid":"u06","name":"Gourav","address":"Tripura","tag1":"aircel","tag2":"vodafone","tag3":"airtel"}]} 

现在你可以看到,对于UID = U02有2个标签。输出看起来像附图。我如何删除空白值或空值?请谁能帮我... enter image description here

+0

这段代码很糟糕。它可以创建多个具有相同ID的单元格,将其更改为类 – Beri 2014-10-28 07:24:20
+0

okk ..谢谢..我会这样做的。 – Subho 2014-10-28 07:26:41

回答

我想,你说的有关在标签栏额外, ...一个凌乱的解决方案是

$.ajax({ 
    url: "showAll", 
    dataType: "json", 
    success: function (data) { 
     $('#user_table tr:gt(0)').remove(); 
     jQuery.each(data['Payload'], function (index, value) { 
      var tags = $.map([value.tag1, value.tag2, value.tag3], function (value) { 
       return value || undefined; 
      }); 

      var row = '<tr>' + '<td id="tduid">' + value['uid'] + '</td>' + '<td>' + value['name'] + '</td>' + '<td>' + value['address'] + '</td>' + '<td>' + tags + '</td>' + '<td>' + '<button class="deleteUser btn btn-danger" type="submit">Edit</button>' + '</td></tr>'; 

      $('#user_table').append(row); 
     }); 
    } 
}); 

正如@Alnitak说

var tags = [value.tag1, value.tag2, value.tag3].filter(function (value) { 
    return value !== undefined; 
}); 
console.log(tags) 
+0

优秀!!!!非常感谢你@Arun P Jhony .. – Subho 2014-10-28 07:25:55

+1

我认为你需要'.join(',')'标签在一起。此外,“更多ES5”解决方案将使用'.filter'而不是'$ .map'。与来自其他语言的'map'函数相比,jQuery的'$ .map'的行为有点,呃,奇怪。 – Alnitak 2014-10-28 08:17:20

我想,你说的有关在标签栏额外, ...一个凌乱的解决方案是

$.ajax({ 
    url: "showAll", 
    dataType: "json", 
    success: function (data) { 
     $('#user_table tr:gt(0)').remove(); 
     jQuery.each(data['Payload'], function (index, value) { 
      var tags = $.map([value.tag1, value.tag2, value.tag3], function (value) { 
       return value || undefined; 
      }); 

      var row = '<tr>' + '<td id="tduid">' + value['uid'] + '</td>' + '<td>' + value['name'] + '</td>' + '<td>' + value['address'] + '</td>' + '<td>' + tags + '</td>' + '<td>' + '<button class="deleteUser btn btn-danger" type="submit">Edit</button>' + '</td></tr>'; 

      $('#user_table').append(row); 
     }); 
    } 
}); 

正如@Alnitak说

var tags = [value.tag1, value.tag2, value.tag3].filter(function (value) { 
    return value !== undefined; 
}); 
console.log(tags) 
+0

优秀!!!!非常感谢你@Arun P Jhony .. – Subho 2014-10-28 07:25:55

+1

我认为你需要'.join(',')'标签在一起。此外,“更多ES5”解决方案将使用'.filter'而不是'$ .map'。与来自其他语言的'map'函数相比,jQuery的'$ .map'的行为有点,呃,奇怪。 – Alnitak 2014-10-28 08:17:20

我想,你说的有关在标签栏额外, ...一个凌乱的解决方案是

$.ajax({ 
    url: "showAll", 
    dataType: "json", 
    success: function (data) { 
     $('#user_table tr:gt(0)').remove(); 
     jQuery.each(data['Payload'], function (index, value) { 
      var tags = $.map([value.tag1, value.tag2, value.tag3], function (value) { 
       return value || undefined; 
      }); 

      var row = '<tr>' + '<td id="tduid">' + value['uid'] + '</td>' + '<td>' + value['name'] + '</td>' + '<td>' + value['address'] + '</td>' + '<td>' + tags + '</td>' + '<td>' + '<button class="deleteUser btn btn-danger" type="submit">Edit</button>' + '</td></tr>'; 

      $('#user_table').append(row); 
     }); 
    } 
}); 

正如@Alnitak说

var tags = [value.tag1, value.tag2, value.tag3].filter(function (value) { 
    return value !== undefined; 
}); 
console.log(tags) 
+0

优秀!!!!非常感谢你@Arun P Jhony .. – Subho 2014-10-28 07:25:55

+1

我认为你需要'.join(',')'标签在一起。此外,“更多ES5”解决方案将使用'.filter'而不是'$ .map'。与来自其他语言的'map'函数相比,jQuery的'$ .map'的行为有点,呃,奇怪。 – Alnitak 2014-10-28 08:17:20