跳转到主要内容

JSON-LD vs Microdata

4.1 两种格式的本质区别

Microdata 把结构化数据嵌入到HTML标签的属性中:
<div itemscope itemtype="https://schema.org/Product">
  <h1 itemprop="name">经典帆布运动鞋</h1>
  <span itemprop="description">舒适透气的帆布鞋</span>
  <div itemprop="offers" itemscope itemtype="https://schema.org/Offer">
    <span itemprop="price" content="299">¥299</span>
    <meta itemprop="priceCurrency" content="CNY">
    <link itemprop="availability" href="https://schema.org/InStock">
  </div>
</div>
JSON-LD 把结构化数据放在独立的 <script> 标签中:
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "经典帆布运动鞋",
  "description": "舒适透气的帆布鞋",
  "offers": {
    "@type": "Offer",
    "price": "299",
    "priceCurrency": "CNY",
    "availability": "https://schema.org/InStock"
  }
}
</script>

4.2 详细对比

维度JSON-LDMicrodata
位置独立 <script> 标签,通常在 <head>嵌入在HTML标签属性中
与HTML耦合度完全解耦紧密耦合
维护成本低,改数据不影响页面结构高,修改标记可能影响页面布局
动态生成容易,后端输出JSON即可困难,需要修改HTML模板
可读性高,标准JSON格式低,散布在HTML标签中
Google推荐是(官方首选格式)支持但非首选
AI代理解析更高效(标准JSON解析)需要遍历DOM树
多实体关联简单(JSON嵌套)复杂(需要itemref跨元素引用)
SSR/SSG兼容完全兼容完全兼容
CSR(SPA)兼容需要确保爬虫时可见同上

4.3 什么时候Microdata更合适

虽然JSON-LD是通用推荐,但有几种场景Microdata可能更合适:
  1. CMS模板已内置Microdata — 如果你的WordPress主题已经输出了正确的Microdata,且数据完整,不需要为了换格式而重构
  2. 页面内容和标记必须严格一致 — Microdata天然保证标记数据和可见内容一致(因为它们就是同一段HTML)
  3. 极简页面 — 单一Product、单一Article等简单场景

4.4 从Microdata迁移到JSON-LD

如果你决定迁移,步骤如下: 第一步:提取现有Microdata数据 找到页面中所有 itemscopeitemprop 属性,记录数据结构。 第二步:构建等价的JSON-LD 把Microdata中的每个 itemprop 映射到JSON-LD的键:
MicrodataJSON-LD
itemprop="name" 的文本内容"name": "文本内容"
itemprop="price" content="299""price": "299"
itemtype="https://schema.org/Offer""@type": "Offer"
第三步:添加JSON-LD,保留Microdata 先两者并存运行1-2周,用验证工具确认JSON-LD输出正确后,再移除Microdata属性。 第四步:移除Microdata属性 从HTML标签中删除 itemscopeitemtypeitemprop 属性。注意不要删除标签本身或其他CSS类名。
迁移不需要一次完成。可以先从最重要的页面(商品详情页、首页)开始,逐步覆盖全站。

4.5 验证迁移结果

迁移后必须验证:
  1. Google Rich Results Test 验证JSON-LD输出
  2. 比对迁移前后的数据字段,确认没有遗漏
  3. 在Google Search Console中观察结构化数据报告,确认无错误

下一章: robots.txt优化 — AI爬虫访问控制的精确配置