为了账号安全,请及时绑定邮箱和手机立即绑定

读取 json 文件数组中的数组

读取 json 文件数组中的数组

慕虎7371278 2022-12-09 19:16:48
我正在构建一个将数据从 JSON 文件输出到表中的站点,但是我在获取要输出的内容时遇到了问题。这个 JSON 文件是从另一个显示文档的站点生成的,而我的站点只是创建一个表格以便于搜索这些文档。2 个文档的示例 JSON:    [{        "title": "SampleTitleA",        "lang": "en-US",        "lastEdition": "2020-07-28",        "version": "1.0",        "metadata": [        {            "key": "sampleKeyA1",            "label": "sampleLabelA1",            "values": ["sampleValueA1"]        },        {            "key": "sampleKeyA2",            "label": "sampleLabelA2",            "values": ["sampleValueA2"]        }]    },    {        "title": "SampleTitleB",        "lang": "en-US",        "lastEdition": "2020-07-28",        "version": "1.0",        "metadata": [        {            "key": "sampleKeyB1",            "label": "sampleLabelB1",            "values": ["sampleValueB1"]        },        {            "key": "sampleKeyB2",            "label": "sampleLabelB2",            "values": ["sampleValueB2"]        }]    }]我为此使用 DataTables ( https://datatables.net/examples/ajax/deep.html ) 并尝试按照它描述的去做。它并没有真正涵盖读取数组中的数组。创建了一个表,但没有填充,并且在控制台中没有显示任何错误。有没有人为此目的使用数据表的经验?
查看完整描述

2 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

检查这是否可以帮助您。


var data = {

    "title": "SampleTitle",

    "lang": "en-US",

    "lastEdition": "2020-07-28",

    "version": "1.0",

    "metadata": [

    {

        "key": "sampleKey1",

        "label": "sampleLabel1",

        "values": ["sampleValue1"]

    },

    {

        "key": "sampleKey2",

        "label": "sampleLabel2",

        "values": ["sampleValue2"]

    }]

}


var result = { data: data.metadata[1].values[0], "defaultContent": "-" }

console.log(result);


查看完整回答
反对 回复 2022-12-09
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

您的 JSON 数据结构是一个数组——所有内容都包含在一个中[...]——因此 DataTables 可以遍历该数组以生成其表行。


data这是一个示例,其中除了列定义(和列标题)外,所有内容都从您的代码中删除:


<script type="text/javascript">


 $(document).ready(function() {


    $('#example').DataTable({

        ajax: {

          // my test URL:

          url: 'http://localhost:7000/sample2',

          dataSrc: ''

        },

        "columns": [

          { title: 'Title', data: 'title' },

          { title: 'Language', data: 'lang' },

          { title: 'Key', data: 'metadata[0].key' },

          { title: 'Label', data: 'metadata[0].label' },

          { title: 'First Value', data: 'metadata[0].values[0]' }

        ]

    } );


  } );


</script>

这会生成一个如下所示的表:

//img1.sycdn.imooc.com//6393194900014e0c06540148.jpg

这是如何运作的?

默认情况下,DataTables 期望 JSON 结构为以下之一:

  1. 包含其他对象数组的对象:

{ "data": [ {...},{...},... ] }
  1. 包含数组数组的对象:

{ "data": [ [...],[...],... ] }

在这两种情况下,数组都有一个名称(在本例中为data)。

在您的情况下,如前所述,您的数据只是一个普通的对象数组:

[ {...}, {...},... ]

因为数组没有名称,所以我们需要dataSrc: ''在 DataTable 定义中使用它来表示缺少名称。

之后,您可以引用需要显示的值,例如data: 'title'.

对于该metadata部分,它本身就是一个引用对象数组的标签:

"metadata": [ {...} ]

但是,在这种情况下,数组只包含一个对象。我们可以使用[0]- 引用元数据数组中的第一个对象,然后我们可以访问该对象中的值 - 例如,通过使用:data: 'metadata[0].label'


查看完整回答
反对 回复 2022-12-09
  • 2 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号