JSON-LD 和微数据在同一页面上?

Posted

技术标签:

【中文标题】JSON-LD 和微数据在同一页面上?【英文标题】:JSON-LD and Microdata on the same page? 【发布时间】:2017-04-23 09:46:16 【问题描述】:

我的电子商务产品页面上有 Micro Data 和 JSON-LD,描述了相同的东西(在我的例子中是产品)。由于超出此问题范围的原因,我无法删除这两种格式中的任何一种。我想知道:

    这对 Google 来说是个问题吗?结构化数据测试工具会显示两个项目(产品)而不是一个。

    如果一个属性,比如产品的名称,在两种格式之间略有不同,这两种格式中的任何一种会优先考虑吗?例如,JSON-LD?

【问题讨论】:

这能回答你的问题吗? Google does not correctly merge microdata and json+ld in the same page using same URI id 【参考方案1】:

问题在于消费者会认为描述了不同的事物(或者更准确地说:消费者不知道事物是否相同)。

有一种方法可以防止这种情况¹:give each thing a URI,如果事情相同,则使用相同的 URI。

这可以通过 JSON-LD 中的 @id 和 Microdata 中的 itemid 来完成。

所以一个简单的案例可能是:

<!-- markup on the product page, 
     so the fragment "#this" results in an absolute URI like 
     "http://example.com/products/foo#this" -->

<!-- JSON-LD -->
<script type="application/ld+json">

  "@context": "http://schema.org",
  "@type": "Product",
  "@id": "#this",
  "name": "Foo"

</script>

<!-- Microdata -->    
<article itemscope itemtype="http://schema.org/Product" itemid="#this">
  <h1 itemprop="name">Foo</h1>
</article>

如果像name 这样的属性有不同的值,消费者可以处理这种情况的明显方法是给事物多个名称。对于消费者只需要一个名称的功能(例如,在丰富的结果中),没有定义将使用哪个 name 值。如果消费者是搜索引擎,它可能会使用其现有的专有算法来处理此类情况。


¹ 当然,目前尚不清楚所有不同的消费者是否/如何支持它。但这是执行此操作的正确方法,也是执行此操作的唯一明确方法。隐含的方式包括希望消费者理解通常(但不一定)独特属性(例如,urlemailproductID 等)的相同值意味着事情是相同的。但是这种隐式方式当然可以和显式方式一起使用。

【讨论】:

“有一种方法可以防止这种情况¹:给每个事物一个 URI,如果事物相同,则使用相同的 URI。”不适用于 Google,请参阅 ***.com/a/59771262/565110 @DavidRiccitelli 请提供任何证据或参考来证明您声称与 Google 不兼容? 看到这个***.com/questions/33756091/… 还尝试使用 SDTT 中相同的 @id/item 复制和粘贴 JSON-LD 和微数据:它们不会合并。干杯

以上是关于JSON-LD 和微数据在同一页面上?的主要内容,如果未能解决你的问题,请参考以下文章

通过使用结构化数据 JSON-LD,我为网站带来了更多的流量

JSON-LD Schema.org:多个视频/图像页面

是否必须嵌入 JSON-LD?

如何使用Ajax动态更新JSON-LD脚本?

html 常见问题(FAQ)页面Schema.org JSON-LD格式

html JSON-LD审核片段结构化数据示例