首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引导表中嵌套数组的处理

引导表中嵌套数组的处理
EN

Stack Overflow用户
提问于 2017-01-17 11:44:42
回答 1查看 5.7K关注 0票数 1

我正在开发一个2000+条目Zotero数据库,并希望使用自举表公开展示它。

但是,由于Zotero字段的工作方式(也就是author字段),JSON文件出现了问题。示例:

代码语言:javascript
复制
"author": [{
    "family": "Obama",
    "given": "Barack"
        }
    ,
        {
    "family": "Obama",
    "given": "Michele"
        }]

如果我使用"author“字段,这可以转换为Object对象,或者我可以使用FlatJson扩展并使用只使用嵌套的值(通过”Auth.0.族“),这会中断搜索,并且不会返回所有作者。

更新:参见小提琴

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-18 14:30:52

您应该能够使用行格式化程序来处理这个问题。

表中的行标题应该如下所示:

代码语言:javascript
复制
<th data-field="author" data-formatter="authorFormatter">

在实例化引导表的javascript下面,可以添加格式化程序代码。像这样的东西应该与“巴拉克·奥巴马”(Barack)形成一个字符串,尽管你可以按照自己喜欢的方式格式化它。

代码语言:javascript
复制
<script>
function authorFormatter(value, row) {
    if ((value) && (value[0].given)) {
        return value[0].given + ' ' + value[0].family;
    }
}
</script>

引导表中的格式化程序功能使得保持JSON干净很容易,同时根据需要在表中显示数据。

更新

假设您的JSON看起来像这样(基于您的示例):

代码语言:javascript
复制
{ 
"type": "chapter", 
"title": "Long title", 
"container-title": "Other title", 
"publisher": "Publisher", 
"publisher-place": "City", 
"page": "XX-XX", 
"source": "Library", 
"ISBN": "XXXXXXXXXXX", 
"container-author": 
    [ 
        { 
            "family": "XXX", 
            "given": "XXX" 
        } 
    ], 
    "author": 
    [
        { 
            "family": "Obama", 
            "given": "Barack" 
        }, 
        { 
            "family": "Obama", 
            "given": "Michelle" 
        } 
    ],
    "issued": 
    { 
        "date-parts": 
            [ 
                [ "2012" ] 
            ]
    } 

}

HTML表的外观如下所示:

代码语言:javascript
复制
<table 
id="table"
class="table table-striped"
data-toggle="table"
data-url="https://url.to.your.json"
data-side-pagination="server">
    <thead>
        <tr>
            <th data-field="author" data-formatter="authorsFormatter">Authors</th>
        </tr>
    </thead>
</table>

您的javascript应该如下所示:

代码语言:javascript
复制
<script>
// Initialize the bootstrap-table javascript
var $table = $('#table');
$(function () {
});

// Handle your authors formatter, looping through the 
// authors list
function authorsFormatter(value) {
    var authors = '';

    // Loop through the authors object
    for (var index = 0; index < value.length; index++) {
        authors += value[index].given + ' ' + value[index].family;

        // Only show a comma if it's not the last one in the loop
        if (index < (value.length - 1)) {
            authors += ', ';
        }
    }
    return authors;
}
</script>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41696281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档