schema.org - 如何在 JSON-LD 中使用多个元素

标签 schema.org json-ld

<分区>

我有一个描述旅游景点的页面 ( TouristAttraction )。因为我还想添加面包屑信息,所以我需要添加 WebPage

添加这两个信息的方式是什么:

  1. 我是否应该使用 WebPage 并将 TouristAttraction 添加为 mainEntity
  2. 我应该创建 2 个单独的 JSON-LD script block 吗? WebPageTouristAttraction block ?

当使用 2 个实体时:

  1. 我是否必须在两个实体中提供主要信息(名称、图像、评级等),还是只在一个(哪个)实体中提供?

最佳答案

@unor 的回答几乎是正确的,但如果你是为谷歌 serp 做的,只将它分成单独的 json block (或图形符号)会得到最好的结果。

假设您要使用 Recipe获得实体google's rich snippet for Recipies在 serps 中你会这样做:

<script type="application/ld+json">
{
  "@context":"https:\/\/schema.org",
  "@type":"Recipe",
  "name":"Example",
  "image":"https:\/\/www.example.com"
}
</script>

在谷歌的 Structed Data Testing Tool你会得到一个预览按钮:

enter image description here

如果您现在想要添加来自其他实体(如面包屑)的其他信息,您必须使用单独的 JSON-LD block ,否则您将无法获得预览按钮。例如

<script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@type": "ItemPage",
    "breadcrumb": {
        "@type": "BreadcrumbList"
    },
    "mainEntity": {
        "@type":"Recipe",
        "name":"Example",
        "image":"https:\/\/www.example.com"
    }
}
</script>

有效,但不会显示预览按钮。

但是如果你把它分开,它会显示给单独的实体和预览按钮:

<script type="application/ld+json">
    {
        "@context": "http://schema.org",
        "@type": "ItemPage",
        "breadcrumb": {
            "@type": "BreadcrumbList"
        }
    }
</script>
<script type="application/ld+json">
{
    "@context": "http://schema.org",
        "@type":"Recipe",
        "name":"Example",
        "image":"https:\/\/www.example.com"
    }
}
</script>

Array-Notation 同样适用:

<script type="application/ld+json">
[
    {
        "@context": "http://schema.org",
        "@type": "ItemPage",
        "breadcrumb": {
            "@type": "BreadcrumbList"
        }
    },
    {
        "@context": "http://schema.org",
         "@type":"Recipe",
         "name":"Example",
         "image":"https:\/\/www.example.com"
    }
]
</script>

和图表:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@graph": 
    [
        {
            "@type": "ItemPage",
            "breadcrumb": {
                "@type": "BreadcrumbList"
            }
        },
        {
            "@type":"Recipe",
            "name":"Example",
            "image":"https:\/\/www.example.com"
        }
    ]
}
</script>

致谢@unor(另见 How do you combine several JSON-LD markups?)

关于schema.org - 如何在 JSON-LD 中使用多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51730877/

相关文章:

html - 正确的 HTML5 (+ schema.org) 标记文章的发布日期和位置

schema.org - QAPage 有多个问题

JSON-LD 缺少 '}' 或对象成员名称。错误

json - 如何在需要等待内容加载的动态页面上使用 JSON-LD 添加结构化数据?

seo - Schema.org 中的 NAICS 代码或名称

html - 在 Article sheme 上设置 logo 属性

html - 微数据/Schema.org/SEO : How to properly set a ContactPoint

seo - 遵循 JSON-LD @id 引用的结构化数据测试工具 – 这会按预期工作吗?

thymeleaf - 为 Thymeleaf 的内联 Javascript 指定双引号

html - 混合 JSON-LD 和 Microdata Schema.org