结构化数据 · 基础篇 第 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 标签上添加 itemscope、itemtype 和 itemprop 属性来标注语义。它直接嵌入在现有的 HTML 结构中,与页面元素一一对应。

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

RDFa

RDFa(Resource Description Framework in Attributes)与 Microdata 类似,也是通过 HTML 属性嵌入语义标注,使用 vocab、typeof、property 等属性。语法比 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 替代 itemprop,typeof 替代 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 覆盖。