JSON-LD 关键字参考

JSON-LD 关键字以 @ 开头,具有规范定义的含义。普通业务字段不应使用 @ 前缀,除非它确实是 JSON-LD 关键字。

常用关键字速查

关键字 用途 常见场景
@context 定义字段、类型和前缀如何解释 每个 JSON-LD 文档
@type 声明对象或值的类型 ArticleProductPerson
@id 声明实体 IRI 或引用实体 实体复用、知识图谱
@value 声明字面量值 语言、类型化值
@language 声明语言标签 多语言文本
@graph 在一个文档中放多个节点 组织、网站、页面组合
@list 表示有序列表 顺序必须保留的数据
@set 表示集合 强制值作为数组处理
@container 定义容器映射方式 语言映射、索引映射
@vocab 定义默认词汇表 自定义上下文
@base 定义相对 IRI 的基准 文档级 IRI 解析
@reverse 表示反向属性 反向关系建模

@context

{
  "@context": "https://schema.org",
  "@type": "Person",
  "name": "Ada Chen"
}

@context 可以是字符串、对象或数组。面向 Schema.org 的网页结构化数据,通常使用字符串即可。

@type

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Acme K1"
}

@type 用来说明对象类型。对于搜索结构化数据,类型要和页面主体一致,并符合目标平台支持范围。

@id

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://example.com/#organization",
  "name": "Example Docs"
}

@id 是实体身份,不只是页面链接。引用已有实体时,可以只写 @id

{
  "publisher": {
    "@id": "https://example.com/#organization"
  }
}

@value、@language、@type

值对象用于表达普通字符串无法表达的细节:

{
  "@value": "Bonjour",
  "@language": "fr"
}

类型化值示例:

{
  "@value": "2026-09-22",
  "@type": "http://www.w3.org/2001/XMLSchema#date"
}

在 Schema.org SEO 场景中,大多数日期和数字字段直接使用平台文档要求的字符串格式即可。

@graph

{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://example.com/#organization",
      "name": "Example Docs"
    },
    {
      "@type": "WebPage",
      "@id": "https://example.com/json-ld",
      "publisher": { "@id": "https://example.com/#organization" }
    }
  ]
}

@graph 可以减少重复并清晰表达多实体关系。

@list 与 @set

@list 表示顺序有语义:

{
  "@context": {
    "steps": {
      "@id": "https://schema.org/step",
      "@container": "@list"
    }
  },
  "steps": ["准备数据", "生成 JSON-LD", "验证上线"]
}

@set 常用于确保某个字段即使只有一个值,也按集合处理。网页结构化数据里通常直接使用数组更直观。

@container

@container 定义容器如何解释。语言映射示例:

{
  "@context": {
    "name": {
      "@id": "https://schema.org/name",
      "@container": "@language"
    }
  },
  "name": {
    "zh-CN": "结构化数据指南",
    "en": "Structured Data Guide"
  }
}

@vocab 和 @base

@vocab 为短字段提供默认词汇表:

{
  "@context": {
    "@vocab": "https://schema.org/"
  }
}

@base 用于解析相对 IRI:

{
  "@context": {
    "@base": "https://example.com/docs/"
  },
  "@id": "json-ld"
}

在公开网页中,直接写绝对 URL 往往更清楚。

不建议随意使用的关键字

关键字 原因
@reverse 语义更复杂,普通 Schema.org 标记很少需要
@nest 可改善 JSON 结构,但增加消费方理解成本
@included 适合特定图数据场景,网页结构化数据通常不需要
@version 只有需要明确 JSON-LD 1.1 处理模式时才使用
@direction 用于文本方向,需确认处理器支持

编写建议

  • 新手先掌握 @context@type@id@graph
  • 面向 SEO 时优先照目标平台文档写,少用高级关键字。
  • 面向知识图谱时重点设计稳定 @id 和上下文。
  • 任何关键字的引入都应让数据更清晰,而不是更炫技。