如何将JSON元数据正确呈现为HTML?

时间:2018-02-08 08:06:18

标签: jquery html json

目前我正在使用以下代码从我的网站上的任何给定页面的标题处的LD + JSON脚本中提取数据,然后我将该数据打印到特定部分。到目前为止一切都很好。

$(document).ready(function () {
    var data = $(".metadata").html();
    var json = JSON.parse(data);
    $('.title').html(json.name);
    $('.datePublished').html(json.datePublished);
    $('.dateModified').html(json.dateModified);
    $('.keywords').html(json.keywords);
    $('.author').html(json["author"]["name"]);
    $('.editor').html(json["editor"]["name"]);
    $('.publisher').html(json["publisher"]["name"]);
});
然后我以这种方式检索它:

<div class="article-meta">
<p>Author: <span class="author"></span>; Editor: <span class="editor"></span>; Publisher: <span class="publisher"></span>.</p>
<p><span class="article-small">Keywords: <span class="keywords"></span></span></p>
</div>

然而,这是我不理解的事情发生的地方。如果我的页面调用所有这些参数,它就可以正常工作。但是,如果有,例如,没有声明的#34;编辑器&#34;,那么它下面的所有参数都不再打印。在上面的示例中,&#34; publisher&#34;停止出现,因为我没有打电话给#34;编辑&#34;。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

如果属性json [&#34; author&#34;]未定义,则Javascript将暂停,并且在尝试阅读&#34; name&#34;时不会继续subproperty(可以在浏览器控制台中查看);

作为一种防止此错误的方法,您可以先检查该值是否存在,如下所示:

if (json["author"] != undefined) { $('.author').html(json["author"]["name"]); }