在 jquery 数据表中显示嵌套的 JSON 数据

Posted

技术标签:

【中文标题】在 jquery 数据表中显示嵌套的 JSON 数据【英文标题】:Display nested JSON data in jquery datatables 【发布时间】:2015-12-21 09:29:53 【问题描述】:

使用 AJAX 发出 POST 请求后,我得到以下 JSON 响应:

    
"ServiceName": "ABC",
"Response": 
    "Object": [
        
            "Attributes": 
                "Attribute": [
                    
                        "AttributeName": "Name",
                        "AttributeValue": "XYZ"
                    ,
                    
                        "AttributeName": "Place",
                        "AttributeValue": "Abc"
                    ,
                    
                        "AttributeName": "Country",
                        "AttributeValue": "Americas"
                    ,
                    
                        "AttributeName": "Code",
                        "AttributeValue": "576"
                    
                ]
            
        ,
        
            "Attributes": 
                "Attribute": [
                    
                        "AttributeName": "Name",
                        "AttributeValue": "XYZHJ"
                    ,
                    
                        "AttributeName": "Place",
                        "AttributeValue": "Abchgh"
                    ,
                    
                        "AttributeName": "Country",
                        "AttributeValue": "India"
                    ,
                    
                        "AttributeName": "Code",
                        "AttributeValue": "536"
                    
                ]
            
        
    ]

我正在使用数据表来显示数据。但使用这个嵌套的 JSON,我无法直接获取数据。 我用这个https://datatables.net/examples/server_side/post.htmlhttps://datatables.net/reference/option/ajax.dataSrc作为参考。

【问题讨论】:

您的问题是什么?你的代码在哪里?您给我们的只是您的 JSON 响应,但没有代码。我们应该如何帮助您? 与服务器端处理returned data 有不同的格式。您发布的内容与预期返回的 JSON 不匹配。 【参考方案1】:

您必须遍历响应并将其转换为 dataTables 可以理解的格式。当我阅读示例数据时,您有一个Object 持有Attributes 的块,持有一个Attribute,键=> 值对为AttributeName => AttributeValue。所以在 dataSrc 回调中解析响应:

var table = $("#example").DataTable(
    ajax : 
        url : 'nestedData.json',
        dataSrc : function(json) 
            var temp, item, data = [];
            for (var i=0;i<json.Response.Object.length;i++) 
                temp = json.Response.Object[i].Attributes.Attribute;
                item = ;
                for (var elem in temp)             
                    item[temp[elem].AttributeName] = temp[elem].AttributeValue
                
                data.push(item);
            
            return data
        
    ,
    columns : [
         data : 'Name', title : 'Name' ,
         data : 'Place', title : 'Place'  ,
         data : 'Country', title : 'Country' ,        
         data : 'Code', title : 'Code' 
    ]    
)

dataSrc 回调在表单上返回一个对象数组:

data = [
   Code: "576", Country: "Americas", Name: "XYZ", Place: "Abc" ,
   Code: "536", Country: "India", Name: "XYZHJ", Place: "Abchgh" 
]

【讨论】:

以上是关于在 jquery 数据表中显示嵌套的 JSON 数据的主要内容,如果未能解决你的问题,请参考以下文章

jquery ajax嵌套循环,将数据显示到页面,但是循环次数对,每次都显示同一条数据, 代码:

使用 Javascript 从 json 数据中动态嵌套 ul\li 列表

将嵌套的 Json 字符串转换为对象并在 Jquery 数据表单元格中呈现

取消嵌套嵌套 json 数据以显示在 Quicksight 中

嵌套 JQuery/json 调用时出现 GET 错误:更新

问题嵌套 JSON 无法在数据表中显示值