假设我有一个嵌套对象中有一些属性的JSON对象。
{
"title": "My Blog Post",
"meta": {
"publishedAt": "2016-08-01T00:00:00Z"
}
}
我可以通过简单的方法将@context
添加到我的顶级对象中
这些属性(即只是“通过”元对象)?一些东西
这些行:
{
"@context": {
"title": "schema:name",
"meta.publishedAt": {
"@type": "xsd:date",
"@id": "schema:datePublished"
}
},
"@id": "/my-article",
"title": "My Blog Post",
"meta": {
"publishedAt": "2016-08-01T00:00:00Z"
}
}
我想避免向嵌套对象添加(复制)@id
,否则我将以其他方式解决它:
{
"@context": {
"title": "schema:name",
"meta": { "@id": "_:meta", "@container": "@set" },
"publishedAt": {
"@type": "xsd:date",
"@id": "schema:datePublished"
}
},
"@id": "/my-article",
"title": "My Blog Post",
"meta": {
"@id": "/my-article",
"publishedAt": "2016-08-01T00:00:00Z"
}
}
此解决方案正常工作,但需要重复,并且来自ethanresnick's
comments on Github关于注释JSON API。他在another issue中指出@context
“不足以表达对JSON API结构的注释”。我希望至少在这个问题上证明他是错的。
答案 0 :(得分:3)
我刚刚发现最新的JSON-LD规范包含nested properties的新部分。像这样定义上下文应该会产生所需的输出:
{
"@context": {
"title": "schema:name",
"meta": "@nest",
"publishedAt": {
"@type": "xsd:date",
"@id": "schema:datePublished",
"@nest": "meta"
}
},
...
}
答案 1 :(得分:2)
如果你要做的是吃meta元素,那么不,这不能在JSON-LD中完成。
有人讨论过做一个可以做这样的反向索引,但我没有看到问题。您可以在https://github.com/json-ld/json-ld.org/issues创建一个。在某些时候,CG或新成立的工作组将开始查看新版本的功能请求。