跳到主要内容

全面展示:JSON-LD To 展开形式 — Numio

使用 jsonld.js 展开 JSON-LD 文档:应用并移除 @context,术语变为完整 IRI,每个值都包装在由 @value 或 @id 对象组成的数组中。无法映射到 IRI 的键会被丢弃。

确认 schema.org 或自定义 @context 中的术语实际解析为哪些 IRI。

JSON-LD

Expanded

适用场景

  • 确认 schema.org 或自定义 @context 中的术语实际解析为哪些 IRI。
  • 调试结构化数据中因未在 context 中定义而悄悄消失的属性。

使用方法

  1. 将带有 @context 的 JSON-LD 文档粘贴到 JSON-LD 编辑器。
  2. 查看展开后的数组:每个节点列出完整的属性 IRI,值放在数组中。
  3. 与输入对比;输出中缺失的属性就是 context 没有映射的属性。

JSON-LD

{
  "@context": {
    "name": "http://schema.org/name",
    "knows": {"@id": "http://schema.org/knows", "@type": "@id"},
    "homepage": {"@id": "http://schema.org/url", "@type": "@id"}
  },
  "@id": "http://example.org/jane",
  "@type": "http://schema.org/Person",
  "name": "Jane Doe",
  "homepage": "http://janedoe.example",
  "knows": "http://example.org/john"
}

展开后的 JSON-LD

[
  {
    "@id": "http://example.org/jane",
    "@type": [
      "http://schema.org/Person"
    ],
    "http://schema.org/url": [
      {
        "@id": "http://janedoe.example"
      }
    ],
    "http://schema.org/knows": [
      {
        "@id": "http://example.org/john"
      }
    ],
    "http://schema.org/name": [
      {
        "@value": "Jane Doe"
      }
    ]
  }
]

功能与限制

展开使用 jsonld 包在浏览器中运行。https://schema.org/ 这样的远程 @context(默认示例使用了它)由浏览器下载;如果失败(离线、CORS),页面会显示包含该 URL 的错误。

术语定义中的 "@type": "@id" 会把字符串值变为 {"@id": ...} 引用,而不是字面量。

即使只有一个节点,输出也始终是顶层数组。

FAQ

为什么我的部分属性消失了?

展开会丢弃未在 @context 中定义、且不是绝对 IRI 的键。例如,只映射了 name 时,nickname 键会从输出中移除。

可以使用 schema.org 的 context 吗?

可以。只要浏览器能获取到,"@context": "https://schema.org/" 就能使用。离线使用时,请像示例那样内联编写术语定义。

为什么每个值都在数组中?

展开形式的属性值和 @type 始终使用数组,这样处理器可以用同样的方式处理单个值和多个值。

规范与参考资料