Skip to main content
 首页 » 编程设计

c#之将字典列表序列化为可接受的 DataTable Ajax 对象

2024年02月05日41yjmyzz

我有一个 Web 应用程序,我正在其中将一些数据检索到 Bootstrap 表中,我现在想做的是使用 jQuery DataTable而不是当前的,因为它有太多有用的功能。

目前我正在使用 OOP 方法从服务器端检索数据,其中类对象表示特定表中的数据行,并且该对象包含一个存储列名称和值的字典。

我现在正在做的是检索这些类对象并将每个对象的每个字典附加到 List<Item> 中。然后使用 JavaScriptSerializer 序列化此列表对象,此对象返回以下 JSON格式:

[ 
   { 
   "slno":"2", 
    "status_message":"Lights still flashing",  
    "crm_services_id":"1", "subject_id":"Lights are flashing", 
    "severity_id":"5",  
    "user_id":"husain.alhamali",  
    "status_id":"1" 
    }, 
    { 
    "slno":"3",  
    "status_message":"lights working fine",     
    "crm_services_id":"2",  
    "subject_id":"Lights are flashing",  
    "severity_id":"3",  
    "user_id":"husain.alhamali",  
    "status_id":"2" 
    } 
] 

当我尝试使用这个对象来填充我的 DataTable AJAX 时我有一个错误说:

Invalid JSON response

我看到了一些有效 JSON 的例子DataTable 可接受的响应如下:

{ 
"data": [ 
[ 
  "Tiger Nixon", 
  "System Architect", 
  "Edinburgh", 
  "5421", 
  "2011/04/25", 
  "$320,800" 
], 
[ 
  "Garrett Winters", 
  "Accountant", 
  "Tokyo", 
  "8422", 
  "2011/07/25", 
  "$170,750" 
] 
} 

现在我的问题是有没有任何工具或插件可以重新格式化我的 JSON将字符串转换为可接受的格式,如上面的格式?

请您参考如下方法:

使用这个 HTML:

<table id="example"></table> 

此 JS 将创建一个表:

var data = [{ 
  "slno": "2", 
  "status_message": "Lights still flashing", 
  "crm_services_id": "1", 
  "subject_id": "Lights are flashing", 
  "severity_id": "5", 
  "user_id": "husain.alhamali", 
  "status_id": "1" 
}, { 
  "slno": "3", 
  "status_message": "lights working fine", 
  "crm_services_id": "2", 
  "subject_id": "Lights are flashing", 
  "severity_id": "3", 
  "user_id": "husain.alhamali", 
  "status_id": "2" 
}]; 
 
function getColumns(){ 
  for(var i = 0; i < data.length; i++){ 
    let columnsArray = []; 
    var keys = Object.keys(data[i]); 
    for(k in Object.keys(data[i])){ 
      if(data[i].hasOwnProperty(keys[k])){ 
        columnsArray.push({ 
            "data":keys[k] 
        }); 
      } 
    } 
    return columnsArray; 
  } 
} 
$(document).ready(function() { 
  var table = $('#example').DataTable({ 
    "columns": getColumns(), 
    "data": data 
  }); 
}); 

工作 example .希望对您有所帮助。