全面展示:JSON-LD To 展开形式 — Numio
使用 jsonld.js 展开 JSON-LD 文档:应用并移除 @context,术语变为完整 IRI,每个值都包装在由 @value 或 @id 对象组成的数组中。无法映射到 IRI 的键会被丢弃。
确认 schema.org 或自定义 @context 中的术语实际解析为哪些 IRI。
适用场景
- 确认 schema.org 或自定义 @context 中的术语实际解析为哪些 IRI。
- 调试结构化数据中因未在 context 中定义而悄悄消失的属性。
使用方法
- 将带有 @context 的 JSON-LD 文档粘贴到 JSON-LD 编辑器。
- 查看展开后的数组:每个节点列出完整的属性 IRI,值放在数组中。
- 与输入对比;输出中缺失的属性就是 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 始终使用数组,这样处理器可以用同样的方式处理单个值和多个值。