json-ld是当前唯一推荐的结构化数据落地方式;microdata已不建议用于新项目,因其依赖html结构易失效,而json-ld作为google、bing、百度及垂直搜索富展现的强制要求,可靠性与兼容性全面占优。

JSON-LD 是当前唯一推荐的结构化数据落地方式
直接说结论:itemtype(Microdata)已不建议用于新项目,script type="application/ld+json" 是 Google、Bing、百度官方首选,也是垂直搜索(如菜谱、活动、本地商家)富展现的强制要求。不是“哪个更好”,而是“Microdata 在多数真实场景下已经不可靠”。
为什么 itemtype 容易失效
Microdata 依赖 HTML 元素存在性与嵌套结构,爬虫解析时稍有偏差就整块丢弃:
-
itemprop="author"写在itemscope容器外,Google 直接忽略 - 用
<div itemscope itemtype="https://schema.org/Product"> 包裹内容,但中间插入一个未包裹的 <code><p></p>,嵌套断裂,name和price可能无法关联 - CMS 输出的
<time datetime="2024-05-20"></time>缺少时区或 ISO 格式,datePublished字段被判定为无效 - 前端改版后,模板里残留的
itemprop="sameAs"指向已下线页面,校验工具报 “URL unreachable” - 必须放在
内(开头也可,但底部不稳定),且不能嵌套在其他<script></script>标签中 - 绝对不要用 JS 动态拼接注入,
document.write()或innerHTML添加的 script 对 Googlebot 不可见 - 所有 URL 必须是完整 HTTPS 地址,
"logo": "/images/logo.png"会触发Invalid URL错误 - 多个实体(如 WebSite + Organization)必须用数组:
[{ "@type": "WebSite", ... }, { "@type": "Organization", ... }] - 字段值要和页面可见内容严格一致,比如 HTML 里写 “¥199”,JSON-LD 中
"price": "199"无单位、无符号,大概率被拒 - Microdata 标了
itemprop="dateModified"是 2026-09-01,JSON-LD 里"dateModified"是 2026-10-01 → 校验失败 - 页面同时存在
itemscope itemtype="https://schema.org/Recipe"和对应 JSON-LD,但后者漏了recipeIngredient→ 富摘要不触发,且无明确报错提示 - 工具只校验 JSON-LD 中的
@type是否匹配垂直类型要求,Microdata 部分完全被跳过——等于多写了还埋了冲突点
script type="application/ld+json" 的实操要点
它不是“随便贴一段 JSON 就行”,关键在位置、格式和字段一致性:
混合使用 itemtype 和 JSON-LD 会出问题吗
会。Google Rich Results Test 明确提示 “Conflicting structured data”,尤其当两者描述同一实体(如 Article)但字段不一致时:
真正容易被忽略的是:字段对齐。哪怕 JSON-LD 语法全对,只要 BreadcrumbList 里 position 从 0 开始、或 itemListElement 拼错成 itemListElements,整个面包屑结构就失效,且错误提示极不直观。











