JSON-LD 进阶用法
基础 JSON-LD 可以只写 @context 和 @type。当数据规模变大、实体之间关系变多,进阶能力会让结构更清晰、更容易复用。
使用 @graph 组织多个实体
一个页面往往同时包含页面实体、站点实体、组织实体和作者实体。用 @graph 可以把它们放在同一个文档里,并通过 @id 引用:
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "Example Docs",
"url": "https://example.com"
},
{
"@type": "WebSite",
"@id": "https://example.com/#website",
"url": "https://example.com",
"publisher": { "@id": "https://example.com/#organization" }
},
{
"@type": "Article",
"@id": "https://example.com/articles/json-ld#article",
"headline": "JSON-LD 进阶用法",
"publisher": { "@id": "https://example.com/#organization" },
"isPartOf": { "@id": "https://example.com/#website" }
}
]
}
这样比在每个对象里重复组织信息更利于维护。
复用实体引用
如果一个作者出现在多篇文章中,不必每次都完整嵌套:
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Person",
"@id": "https://example.com/authors/ada",
"name": "Ada Chen"
},
{
"@type": "Article",
"headline": "语义化内容",
"author": { "@id": "https://example.com/authors/ada" }
}
]
}
消费方可以用相同 @id 合并实体信息。
语言映射
多语言数据可以使用语言映射:
{
"@context": {
"@vocab": "https://schema.org/",
"name": {
"@id": "name",
"@container": "@language"
}
},
"@type": "Product",
"name": {
"zh-CN": "旅行背包",
"en": "Travel Backpack"
}
}
如果只是单语言网站,直接使用字符串更简单。语言映射更适合国际化目录、开放数据和多语言知识库。
索引映射
索引映射可以让对象按业务键组织,同时仍然可展开为语义数据:
{
"@context": {
"@vocab": "https://schema.org/",
"employees": {
"@id": "employee",
"@container": "@index"
}
},
"@type": "Organization",
"employees": {
"engineering": {
"@type": "Person",
"name": "Ada Chen"
},
"design": {
"@type": "Person",
"name": "Lin Zhou"
}
}
}
这类结构在业务 API 中有价值,但面向搜索引擎的标记要优先遵循对应文档的示例和要求。
远程上下文治理
远程上下文会影响处理结果。生产系统应考虑:
- 远程上下文是否稳定可访问。
- 是否需要缓存上下文以避免请求失败。
- 是否需要版本化上下文,例如
/context/v1.jsonld。 - 上下文变更是否会影响已有消费者。
API 设计中的 JSON-LD
如果要把 JSON-LD 用在 API 中,可以采用“普通业务 JSON + 上下文”的方式:
{
"@context": {
"@vocab": "https://schema.org/",
"id": "@id",
"type": "@type",
"title": "headline",
"publishedAt": "datePublished"
},
"id": "https://api.example.com/articles/1",
"type": "Article",
"title": "API 中的 JSON-LD",
"publishedAt": "2026-09-22"
}
这样业务客户端仍然看到熟悉字段,语义客户端也能展开为标准结构。
何时保持简单
进阶能力不是越多越好。面向网页 SEO 时,优先选择:
- Schema.org 文档和 Google 文档中的直观写法。
- 稳定、可见、真实的页面数据。
- 易测试、易生成、易维护的结构。
只有在确实需要实体复用、多语言、开放数据或知识图谱融合时,再引入复杂上下文和图结构。
相关内容
- JSON-LD 最佳实践 汇总 JSON-LD 在网页、API、结构化数据和知识图谱中的生产建议,覆盖数据一致性、ID 设计、上下文治理和验证流程。
- JSON-LD 上下文与词汇表 深入理解 @context 的作用、远程上下文、本地上下文、@vocab、前缀映射和字段别名,掌握 JSON-LD 语义映射方式。
- JSON-LD 快速开始 通过一个可直接嵌入 HTML 页面的 Article 示例,学习 JSON-LD 的编写、放置、验证和迭代流程。
- JSON-LD 简介 介绍 JSON-LD 的定位、适用场景、与普通 JSON 和 RDF 的关系,以及它在网页结构化数据和开放数据中的价值。
- Schema.org 与 SEO 说明如何用 JSON-LD 编写 Schema.org 结构化数据,理解 Google 搜索支持范围、富媒体结果资格和页面内容一致性要求。
- JSON-LD 语法基础 讲解 JSON-LD 的核心语法,包括上下文、类型、标识符、值对象、语言标记、列表、图和嵌套实体的写法。