结构化数据 · 基础篇 第 2 篇

三种格式对比:JSON-LD vs Microdata vs RDFa

约 12 分钟阅读 更新于 2026-06-23 MagicSEO 编辑部 · 人工审核 结构化数据

在上一篇中我们了解了结构化数据的概念和价值。在动手添加之前,需要先做一个决策:用哪种格式?结构化数据有三种标记格式——JSON-LD、Microdata 和 RDFa。它们都能传达相同的语义信息,但在写法、维护成本和 Google 的推荐程度上有显著差异。结论先说:选 JSON-LD。

三种格式概览#

JSON-LD

JSON-LD(JavaScript Object Notation for Linked Data)是用 JSON 语法编写的结构化数据,放在 <script type="application/ld+json"> 标签中。它与 HTML 完全分离——你的结构化数据是一个独立的 JSON 对象,不需要修改任何现有的 HTML 标签。

这是 Google 官方推荐的格式,也是目前使用最广泛的格式。

Microdata

Microdata 通过在 HTML 标签上添加 itemscopeitemtypeitemprop 属性来标注语义。它直接嵌入在现有的 HTML 结构中,与页面元素一一对应。

Microdata 出现较早,很多老网站和早期 CMS 主题仍在使用。Google 完全支持,但不再优先推荐。

RDFa

RDFa(Resource Description Framework in Attributes)与 Microdata 类似,也是通过 HTML 属性嵌入语义标注,使用 vocabtypeofproperty 等属性。语法比 Microdata 稍复杂,多用于与语义网(Semantic Web)生态集成的场景。

在 SEO 实践中使用率最低,Google 支持但很少在文档中作为主要示例。

格式对比#

维度JSON-LDMicrodataRDFa
放置位置<script> 标签(head 或 body)嵌入 HTML 标签属性嵌入 HTML 标签属性
与 HTML 耦合完全解耦高度耦合高度耦合
可读性清晰的 JSON 结构分散在多个标签中分散在多个标签中
维护难度低(独立修改)高(改 HTML 影响标记)高(改 HTML 影响标记)
CMS 兼容性极好(独立注入)需修改模板需修改模板
多 Schema 共存多个 script 标签并列需嵌套或拆分 HTML需嵌套或拆分 HTML
动态生成JS 生成 JSON 即可需操作 DOM 属性需操作 DOM 属性
Google 推荐✅ 首选推荐✅ 支持✅ 支持

为什么 Google 首选 JSON-LD#

Google 在其 结构化数据官方文档 中明确表示:"Google 推荐尽可能使用 JSON-LD 来实现结构化数据。"理由是:

  • 与 HTML 解耦:JSON-LD 放在独立的 <script> 标签中,不需要修改任何 HTML 元素。页面设计改版时,结构化数据不受影响;反之亦然。
  • 易于阅读和调试:一个完整的 JSON 对象,所有属性集中在一处,比散落在十几个 HTML 标签中的属性更容易检查和修改。
  • CMS 和模板友好:可以在模板的 head 或 body 中注入一段 script 标签,不需要修改文章内容区域的 HTML 结构。
  • 支持动态生成:JavaScript 可以在运行时创建或修改 JSON-LD 对象。Google 的渲染引擎能够读取 JavaScript 动态插入的 JSON-LD。
  • 多类型共存简单:同一页面需要 Article + BreadcrumbList + FAQPage?放三个 <script type="application/ld+json"> 标签就行,彼此独立。

同一数据的三种写法#

下面用一个简单的 Article 标记为例,展示同一语义信息在三种格式中的不同写法。

JSON-LD 写法

JSON-LD
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "如何做好关键词研究",
  "author": {
    "@type": "Person",
    "name": "张三"
  },
  "datePublished": "2026-06-20",
  "image": "https://example.com/keyword-research.jpg"
}
</script>

整个标记集中在一个 JSON 对象中,与页面 HTML 完全无关。

Microdata 写法

Microdata
<article itemscope itemtype="https://schema.org/Article">
  <h1 itemprop="headline">如何做好关键词研究</h1>
  <img itemprop="image"
       src="https://example.com/keyword-research.jpg"
       alt="关键词研究">
  <span itemprop="author" itemscope
        itemtype="https://schema.org/Person">
    <span itemprop="name">张三</span>
  </span>
  <time itemprop="datePublished"
        datetime="2026-06-20">2026-06-20</time>
</article>

语义属性分散在各个 HTML 标签上。如果修改 HTML 结构(比如把 <h1> 改成 <h2>,或移动元素位置),就需要同时检查 itemprop 是否还正确。

RDFa 写法

RDFa
<article vocab="https://schema.org/" typeof="Article">
  <h1 property="headline">如何做好关键词研究</h1>
  <img property="image"
       src="https://example.com/keyword-research.jpg"
       alt="关键词研究">
  <span property="author" typeof="Person">
    <span property="name">张三</span>
  </span>
  <time property="datePublished"
        datetime="2026-06-20">2026-06-20</time>
</article>

RDFa 的结构与 Microdata 非常相似,区别在于属性名不同(property 替代 itemproptypeof 替代 itemtype)。同样与 HTML 高度耦合。

一目了然JSON-LD 的全部标记集中在一个 <script> 标签里,而 Microdata 和 RDFa 的标记散落在每一个 HTML 元素上。当页面结构复杂、标记类型多(Article + BreadcrumbList + FAQPage)时,JSON-LD 的维护优势更加明显。

JSON-LD 优势详解#

与 HTML 完全解耦

这是 JSON-LD 最大的优势。结构化数据和页面展现各自独立:

  • 前端开发改版设计时,不用担心破坏结构化数据
  • SEO 团队修改结构化数据时,不用触碰前端代码
  • A/B 测试页面布局时,结构化数据保持不变

CMS 和自动化友好

JSON-LD 可以通过模板系统、插件或后端逻辑自动生成,注入到页面的 <head> 中,不需要修改文章正文的 HTML 结构。WordPress 的 Yoast、Rank Math 等主流 SEO 插件都默认输出 JSON-LD。

多 Schema 并存无冲突

同一页面可以有多个独立的 <script type="application/ld+json"> 标签,每个描述不同类型的数据。它们互不干扰,也不需要在 HTML 层面处理嵌套关系。

多 Schema 并存
<!-- Schema 1: Article -->
<script type="application/ld+json">
{ "@context": "https://schema.org", "@type": "Article", ... }
</script>

<!-- Schema 2: BreadcrumbList -->
<script type="application/ld+json">
{ "@context": "https://schema.org", "@type": "BreadcrumbList", ... }
</script>

<!-- Schema 3: FAQPage -->
<script type="application/ld+json">
{ "@context": "https://schema.org", "@type": "FAQPage", ... }
</script>
本站示范这篇文章的 <head> 中就包含三个独立的 JSON-LD 标签:Article(描述文章本身)、BreadcrumbList(描述面包屑导航路径)、FAQPage(描述本文末尾的常见问题)。三者互不干扰,各自完整。

Microdata 和 RDFa 什么时候还有用#

虽然 JSON-LD 是最佳选择,但另外两种格式并非完全过时:

  • 历史遗留系统:如果你的网站已经大量使用 Microdata 且标记正确,迁移的优先级不高。Google 对三种格式的解析能力相同。
  • 特定 CMS 或平台限制:某些平台可能不允许注入自定义 <script> 标签,但允许修改 HTML 属性,这时 Microdata 是唯一的选择。
  • 邮件 HTML:Google 在 Gmail 中支持用 Microdata/JSON-LD 标记邮件中的活动、订单等信息。某些邮件客户端对 script 标签有安全限制,Microdata 可能更可靠。
  • 非 Google 消费者:某些语义网工具和知识图谱系统对 RDFa 有特别的支持。但如果你的目标是 Google 搜索,这不是考量因素。

选择建议#

场景推荐格式理由
新项目JSON-LDGoogle 推荐、易维护、与 HTML 解耦
已有 Microdata 且正确维持 Microdata迁移成本大于收益,Google 同等支持
计划大量新增标记JSON-LD新标记用 JSON-LD,老标记逐步迁移
无法注入 script 标签Microdata嵌入 HTML 属性是唯一方案

本栏目的后续文章全部以 JSON-LD 为示例格式。下一篇将详细讲解如何给页面添加 JSON-LD,包括放置位置、基本结构和完整的实操步骤。

常见问题#

JSON-LD、Microdata 和 RDFa 可以在同一个页面混用吗?

技术上可以,Google 也能解析同一页面上不同格式的结构化数据。但强烈建议不要混用——混用会增加维护复杂度,也更容易产生冲突或遗漏。选择 JSON-LD 一种格式统一使用是最佳实践。

已经用 Microdata 标记的老网站需要迁移到 JSON-LD 吗?

如果现有 Microdata 标记正确且维护成本可控,不必急于迁移——Google 仍然完全支持 Microdata。但如果你计划新增更多结构化数据类型,或者现有标记难以维护,迁移到 JSON-LD 是更好的长期选择。迁移时可以逐页替换,不需要一次性完成。

为什么有些 CMS 或插件生成的是 Microdata 而不是 JSON-LD?

历史原因。Microdata 比 JSON-LD 出现更早,很多早期的 WordPress 主题和 SEO 插件默认使用 Microdata(直接嵌入 HTML 标签属性)。现在主流的 SEO 插件(如 Yoast、Rank Math)已经默认生成 JSON-LD 格式。如果你的主题仍然输出 Microdata,可以在插件设置中切换,或者手动添加 JSON-LD 覆盖。